黑马程序员技术交流社区
标题:
求解一道算兔子总数算法
[打印本页]
作者:
yueyuanlin
时间:
2014-6-10 00:11
标题:
求解一道算兔子总数算法
/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
兔子的规律为数列1,1,2,3,5,8,13,21....*/
这个算法,很多初学者都应该看过了,有个问题是,如果我想随意输入一个月份,然后输出当月的兔子总数时,这个程序该怎么写,有点笨,大家帮帮忙!
作者:
武星
时间:
2014-6-10 00:30
#include <stdio.h>
int fun(int n) // 计算某个月兔子的总数
{
if (n==1 || n==2) // 一月和2月返回1
return 1;
else
return fun(n-1)+fun(n-2); //用迭代的思想算出某个特定月份兔子的总数并返回
}
int main()
{
int mouth;
printf("你需要查询第几个月兔子数");
scanf("%d",&mouth); // 接收你输入的月份
fun(mouth); // 把月份传入fun()函数
printf("第%d个月兔子数量为:%d对\n",mouth,fun(mouth)); // 输出月份和返回值
return 0;
}
作者:
yueyuanlin
时间:
2014-6-10 01:00
豁然!果然c语言还是挺有意思第。谢了~~
我刚也写了个,就显得菜鸟多了:L
也粘上来看看吧,呵呵!
#include <stdio.h>
int main ()
{
int i,f1,f2,month;
f1=f2=1;//
printf("请输入您想要查寻的某个月兔子的总数:");
scanf("%d",&month);//
if (month%2==0) {
for (i=1; i<month/2; i++) {
f1=f1+f2;
f2=f1+f2;
}
printf("%d\n",f2);
}
else{
for (i=1; i<=month/2; i++) {
f1=f1+f2;
f2=f1+f2;
}
printf("%d\n",f1);
}
}
明显臃肿太多了
作者:
黄莉萍
时间:
2014-6-10 19:02
学习啦。。。
作者:
武星
时间:
2014-6-10 21:33
你的想法是对的,写的很不错了,但是我猜你没有学过数据结构,想让代码变得整洁就要好好学数据结构,可以让你有更开阔的思维,共勉.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2