汉塔克问题(C语言递归)
生活随笔
收集整理的這篇文章主要介紹了
汉塔克问题(C语言递归)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
漢塔克問(wèn)題(C語(yǔ)言遞歸)
- 操作步驟
- 代碼
操作步驟
在這里將將柱子依次記為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); //將編號(hào)為1的圓盤(pán)從 x移至zreturn;}else {hanoi(n - 1, x, z, y); //將第n個(gè)圓盤(pán)上邊的n-1個(gè)圓盤(pán),借助z移到y(tǒng)move(x, n, z); //這個(gè)時(shí)候還有1個(gè),為第n個(gè),將由x其移到zhanoi(n - 1, y, x, z); //這個(gè)時(shí)候?qū)-1個(gè)在y上邊的圓盤(pán)借助x移到z} }int main() {int n;scanf_s("%d", &n);hanoi(n, 'x', 'y', 'z');return 0; }以3個(gè)盤(pán)子來(lái)舉個(gè)例子。記住遞歸過(guò)程就像在棧上進(jìn)行操作一樣。產(chǎn)生一個(gè)記錄就壓入棧頂,沒(méi)退出一層遞歸就從棧頂彈出一個(gè)工作記錄。
總結(jié)
以上是生活随笔為你收集整理的汉塔克问题(C语言递归)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言建立栈(顺序栈、双栈和链式栈)
- 下一篇: c语言建立队列(顺序队列、循化队列和链式