1.汉诺塔问题
#include <stdio.h>
int count;
void hanoi(int n,char a,char b,char c);
int main(void){
int n;
char a='A',b='B',c='C';
printf("请输入汉诺塔层数\n");
scanf("%d",&n);
hanoi(n,a,b,c);
return 0;
}
void hanoi(int n,char a,char b,char c){
if(n==1){
printf("第%d次移动:%c->%c\n",++count,a,c);
}else{
hanoi(n-1,a,c,b);
printf("第%d次移动:%c->%c\n",++count,a,c);
hanoi(n-1,b,a,c);
}
}
2.斐波那契数列
#include <stdio.h>
int fibo(int a);
int main(void){
int a;
printf("请输入月份\n");
scanf("%d",&a);
printf("%d\n",fibo(a));
return 0;
}
int fibo(int a){
if(a==0) {
return 0;
}else if(a==1) {
return 1;
}else {
return fibo(a-1)+fibo(a-2);
}
}
3.共有十阶楼梯,小张每次只能走一阶或两阶,共有多少种方法走完此楼梯
#include <stdio.h>
int fun(int n){
if(n==1)
return 1;
if(n==2)
return 2;
else{
return fun(n-1)+fun(n-2);
}
}
int main(void){
int (*p)(int)=fun;
printf("%d\n",p(10));
return 0;
}
4.递归方法十进制转化二进制
#include <stdio.h>
void shi_er(unsigned long n){
int r;
r=n%2;
if(n>=2){
shi_er(n/2);
}
putchar(r==0?'0':'1');
}
int main(void){
shi_er(10);
return 0;
}