编译程序:有20级台阶的楼梯,一次可以迈一级或两级台阶,那么爬完此楼梯有几种方法?

设计要求:使用函数的递归调用来实现此题

第1个回答  2013-12-19
#include<stdio.h>
int total=20;
int result[21]={0};
FILE *fp;
int sum=0;
test(int n){
int i;
if(total==0){
printresult(n-1);
sum++;
return;
}
for(i=1;i<=2;i++){
result[n]=i;
total-=i;
if(total>=0)
test(n+1);
total+=i;
}
}
main(){
if((fp=fopen("result.txt","w"))==NULL)
{ /*以文本只写方式打开文件*/
printf("cannot open file");
exit(0);
}
test(1);
printf("There are %d kind of ways to do this",sum);
}
printresult(int n){
int j;
for(j=1;j<=n;j++){
printf("%d ",result[j]);
fprintf(fp,"%d ",result[j]);
}
printf("\n");
fprintf(fp,"\n");
}
结果保存在同目录下的result.txt中 共10946种结果 耐心点 运行需要一定时间
total剩余阶梯数 sum方法种数 result结果数组
第2个回答  2013-12-19
#include "stdio.h"
main()
{ int c(int);
printf("%d",c(20));
}
int c(int n)
{ if(n==1) return 1;
if(n==2) return 2;
return (c(n-1)+c(n-2));
}本回答被网友采纳
第3个回答  2013-12-19
就和100只公鸡,100只母鸡,100只小鸡,和这个题目差不多。
相似回答