C语言编程:兔子繁殖问题
思路不要乱。这个月的兔子只有两个来源,一个来源是上个月的老兔子,另一个来源是这个月刚出生的兔子,而这个月刚出生的兔子,就是两个月前的所有兔子,因为两个月前的所有兔子,无论两个月前就是老的,还是两个月前刚生的,到了这个月就全部具有生育能力,每只都可以下一对儿,所以可以得到一个递推关系f(n)=f(n-1)+f(n-2)。那么程序自然是
longfun(intmonth)
if(month==1||month==2)
return1;
returnfun(month-1)+fun(month-2);
//ConsoleApplication1.cpp:定义控制台应用程序的入口点。
intmain()
intMon;
longNum;
scanf("%d",&Mon);
Num=fun(Mon);
printf("第%d月共有兔子%ld只\n",Mon,Num);
return0;
至于你的程序,很难把它改正确,因为这题压根不是那个思路,那样想会越想越乱的
你那个fun函数没看懂,我是C语言初学者,那个if和else就是fun的功能吗?就是那个if函数看不懂
对。fun的功能是靠if-else实现的,如果月份是1或者2,那么函数返回1,这表示第一个月和第二个月都有一只兔子,否则的话,就返回那个递推的计算,月份减1和减2后再次调用fun本身。
比如你现在计算month=3,也就是第三个月的情况。那么此时if不满足,走else分支,则会返回fun(2)+fun(1)的结果,而fun(2)满足if,返回1,fun(1)满足if,也返回1,那么fun(2)+fun(1)=2,最后算出第3个月有2对。如果month再大一些,就是一层一层的展开调用,最后不断返回,总会得到一个结果。
帕斯特语言编程:小兔子数(rabbit)
#include
usingnamespacestd;
intS(intx)//求各位的和的函数
intsum=0,y;
while(x>10)
y=x%10;
sum+=y;
x=x/10;
sum+=x;
returnsum;
intmain()
intL,R,num=0;
cout<<"输入一个区间【L,R】,L小于R:"<
cin>>L;
cin>>R;
for(intj=L;j
if(S(j)*S(j)==S(j*j))
cout<
num++;
cout<<"区间【"<
本回答由提问者推荐
java 兔子编程题 求助
参考 java.util.arrays 类中 staticvoid sort(t[] a, comparator c) 方法的实现