汉塔克问题(C语言递归)
生活随笔
收集整理的這篇文章主要介紹了
汉塔克问题(C语言递归)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
漢塔克問題(C語言遞歸)
- 操作步驟
- 代碼
操作步驟
在這里將將柱子依次記為x,y,z。
代碼
#include<stdio.h>void move(char x, int n, char z) {printf("%d,%c --> %c\n", n, x, z); }void hanoi(int n, char x, char y, char z) {if (n == 1) { //遞歸終止條件move(x, 1, z); //將編號為1的圓盤從 x移至zreturn;}else {hanoi(n - 1, x, z, y); //將第n個圓盤上邊的n-1個圓盤,借助z移到y(tǒng)move(x, n, z); //這個時候還有1個,為第n個,將由x其移到zhanoi(n - 1, y, x, z); //這個時候將n-1個在y上邊的圓盤借助x移到z} }int main() {int n;scanf_s("%d", &n);hanoi(n, 'x', 'y', 'z');return 0; }以3個盤子來舉個例子。記住遞歸過程就像在棧上進行操作一樣。產生一個記錄就壓入棧頂,沒退出一層遞歸就從棧頂彈出一個工作記錄。
總結
以上是生活随笔為你收集整理的汉塔克问题(C语言递归)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言建立栈(顺序栈、双栈和链式栈)
- 下一篇: c语言建立队列(顺序队列、循化队列和链式