重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这是Fibonaci(斐波那契)数列:1,1,2,3,5,8,13,21,34,55,89,144,……
创新互联-专业网站定制、快速模板网站建设、高性价比永平网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式永平网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖永平地区。费用合理售后完善,10余年实体公司更值得信赖。
第1、2个数是1,从第3个开始,每一个数都是它前面两个数的和,12个月共有兔子144对。36个月你自己推算。
递推公式:
递归程序:
#includestdio.h
long m71(int n)
{ if(n==0) return 0;
if(n==1) return 1;
else return m71(n-2)+m71(n-1);
}
思路不要乱。这个月的兔子只有两个来源,一个来源是上个月的老兔子,另一个来源是这个月刚出生的兔子,而这个月刚出生的兔子,就是两个月前的所有兔子,因为两个月前的所有兔子,无论两个月前就是老的,还是两个月前刚生的,到了这个月就全部具有生育能力,每只都可以下一对儿,所以可以得到一个递推关系f(n) = f(n - 1) + f(n - 2)。那么程序自然是
long fun(int month)
{
if(month == 1 || month == 2)
return 1;
else
return fun(month - 1) + fun(month -2);
}
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
int main()
{
int Mon;
long Num;
scanf("%d",Mon);
Num = fun(Mon);
printf("第%d月共有兔子%ld只\n",Mon,Num);
return 0;
}
至于你的程序,很难把它改正确,因为这题压根不是那个思路,那样想会越想越乱的
设F(n)为第n个月兔子对数,F(1)=1,F(2)=1,F(3)=2,F(4)=3,F(5)=5......
F(n)=F(n-2)+F(n-1)
典型的求斐波那契数列问题。
using System;
namespace Rabbit
{
public class Rabbit
{
public static void Main()
{
int i=4,fn_2=1,fn_1=2;
int fn;
while(i=20)
{
fn=fn_2+fn_1;
fn_2=fn_1;
fn_1=fn;
i++;
}
Console.Write(fn);
Console.ReadKey();
}
}
}
您好,前面已经回答过您的问题了:这里solve是您前面已经定义的函数,用来计算猪和兔子的数量。函数一般都用圆括号而不是方括号,所以您应该这样写:pigs, chickens = solve(legs, heads) 记住在调用函数的时候都是圆括号,只有在用列表list的时候才是方括号。这也是为什么你的pig是红色的。您这一个程序有点像MIT Open Course第四节的例子,您可以参考一下他们的讲义。如果您没有定义solve这个函数的话,可以看以下程序:
def solve(numHeads, numLegs):
test = False
for numChickens in range(0, numHeads + 1):
numPigs = numHeads - numChickens
if 2 * numChickens + 4 * numPigs == numLegs:
test = True
return numPigs, numChickens
if not test:
return None, None