震惊!c语言学了一辈子都不知道的小技巧。第十二章
标题党,我这算不上小技巧就是一点感想。
上一章说到了一些简单的函数定义,大多都是用不用函数都一样。但是这个函数递归就不太一样了就开始有点阴间了,考查的是一些思路和逻辑思维的应用。还有i就是抽象思维的运用,例如这个汉诺塔问题,要抽象为n-1,来移动并不是实际的一个,而是一个整体,类似于数学中的递推公式。通过公式将一次次的移动从抽象到具体。还是要多加体会才能行。这几类的题目并不像之前那些这么直接,所以还得要多家练习。
#include<iostream>
using namespace std;
void hmt(int n ,char a,char b,char c){
if(n==0){return;}
else{
hmt(n-1,a,c,b);
cout<<n<<": "<<a<<" -> "<<c<<endl;
hmt(n-1,b,a,c);
}
}
int main(){
int n;
char a,b,c;
cin>>n>>a>>b>>c;
hmt(n,a,b,c);
return 0;
}