java吧 关注:1,292,648贴子:12,826,189
  • 3回复贴,共1

c语言的题目,c语言吧好像人比较少……

只看楼主收藏回复

题目如下:
问题类似Fibonacci序列,就是兔子生育的问题,只不过兔子长大的月数变成了变量m,然后计算d月后共有多少个兔子。输入整数m,d,输出为d月后兔子的总数。当m=d=0时程序结束。
样例输入
2 3
3 5
1 100
0 0
样例输出
5
9
1267650600228229401496703205376
然后是我写的代码:
#include<stdio.h>
void prt(int n) //顺序输出整数的每一位数
{
if(n<10) printf("%d",n);
else{
n=n/10;
prt(n);
printf("%d",n%10);
}
}
int rabbits(int m,int d){ //计算d月后兔子总数
//int k;
if(d<=m) return d+1;
else{
return (rabbits(m,d-1)+rabbits(m,d-m));
}
}
int main()
{
int m,d;
while(scanf("%d%d",&m,&d)!=EOF){
if(m==0&&d==0)break;
else{
prt(rabbits(m,d));
printf("\n");
}
}
return 0;
}
输入小点的数可以输出,程序也没有问题,但是输入m=1,d=100的时候输出不了了,要怎么处理这么大的数使其可以输出?


IP属地:广东来自Android客户端1楼2018-11-16 23:17回复
    超大数转数组表示


    IP属地:广东来自Android客户端2楼2018-11-16 23:27
    收起回复
      2025-12-26 22:30:23
      广告
      不感兴趣
      开通SVIP免广告
      你每次计算玩rabbits函数以后记录一下入参和结果,如果下次还是这个参数,直接输出结果,而不是重复去计算一次


      IP属地:浙江来自Android客户端3楼2018-11-17 08:55
      回复