gpt4 book ai didi

c - 斐波那契数列代码

转载 作者:太空宇宙 更新时间:2023-11-04 05:54:45 25 4
gpt4 key购买 nike

斐波那契数列在数学和计算机科学中有一系列有趣的用途。例如,假设某天某人正在做早餐时,单个霉菌孢子落在面包上。还假设在孢子产生 48 小时后,它能够 self 克隆,并且此后每 24 小时再产生一个新的孢子。最后还假设每个新孢子在创建 48 小时后也开始每天克隆一个新鲜的孢子。

一般来说 F(n) = F(n-1) + F(n-2)。

编写一个程序,打印出每天结束时存在的孢子数量。当孢子数超过一千万时停止。需要多少天?

int days, next, first=0, second=1;

printf("Enter the day you want to know how many spores exists on\n");
scanf("%d", &days);

while(next < 10000000) {

if(days == 1) {
next = 1;
}
else {
next = first + second;
first = second;
second = next;
}
}
printf("The day %d has %d spores\n", days, next);

到目前为止,我只能做到这一点。但它不会带我去任何地方。其他人只能使用 while、if 和 scanf 函数吗?

最佳答案

斐波那契数列的运作方式如下:

1 1 2 3 5 8 13 21 34 等....

因此归结为 F(n) = F(n-2) + F(n-1) 的公式。您缺少增加天数的代码。

试试这个:

days = 1;
next = 0;
first = 0;
second = 1;

while(next < 10000000) {
next = first + second;
first = second;
second = next;
printf("The day %d has %d spores\n", days, next);
days++;
}

这应该会生成一个正确的斐波那契数列。如果不是,我会更正它。

编辑:我还注意到您的 printf 语句不在 while 循环内。此外,请注意我在进入循环之前如何设置变量,以便在循环内不需要 if 语句。这更像是一个性能问题,因为循环内要做的事情越少,它执行的速度就越快。

关于c - 斐波那契数列代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30230963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com