void hanoi(int n,char a,char b,char c) { if(n>0) { hanoi(n-1,a,c,b); printf("将%d进行操作",n); printf("%c->%c\n",a,c); hanoi(n-1,b,a,c); } } int main(){ char a='A'; char b='B'; char c='C'; hanoi(4,'B','C','A'); } |
任务2:正整数逆序输出
任务描述:输入任意一个不大于9位的正整数,输出各位数的逆序形式,例如:输入12345,输出54321。请分别利用递归和递推两种方式编写程序求解问题。
//递推求逆序 #include<stdio.h> int main() { int num; scanf("%d",&num); int a,i; for(i = 0;num > 0;i++){ a = num % 10; printf("%d",a); num = num/10; } return 0; } //递归求逆序 #include <stdio.h> void oppsite(int n);//逆序输出函数 int main() { int m; scanf("%d",&m); oppsite(m); return 0; } void oppsite(int n) { //逆序输出函数 if(n==0) return; else printf("%d",n%10); oppsite(n/10); //递归调用 return; }
边界条件(基本项)和递归方程
分治算法就是把1个分为多个,递归法就是把多个归一的解决问题方法。 |