C++3个汉诺塔递归问题
生活随笔
收集整理的這篇文章主要介紹了
C++3个汉诺塔递归问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
3個漢諾塔問題A—>C
移動次數2^n-1
要點:A—>C
1.當n==1時直接從A移動到C
2.當n>1時,
先把n-1個盤子借助C,從A移動到B
再把第n個盤子從A移動到C
最后,借助A,把n-1個盤子從B移動到C
漢諾塔移動次數
要點:A—>C
1.當n==1時直接從A移動到C 移動一次
2.當n>1時,
先把n-1個盤子借助C,從A移動到B 移動n-1次
再把第n個盤子從A移動到C 移動一次
最后,借助A,把n-1個盤子從B移動到C 移動n-1次
所以,
n=1,T(N)=1
n>1,T(N)=2T(N-1)+1
代碼示例
#include<iostream> #include<cmath> using namespace std;int count(int n){int number=0;if(n<=0)return -1;if(n==1)number=1;elsenumber=2*count(n-1)+1;return number;}int main() {int n;cout <<"輸入要移動的盤子個數"<<endl; cin>>n;cout<<count(n)<<endl;return 0;}總結
以上是生活随笔為你收集整理的C++3个汉诺塔递归问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《怪物猎人世界》冰原DLC弓箭进阶技巧教
- 下一篇: c++面向对象高级编程 总目录