gpt4 book ai didi

c - 小于给定 n 的斐波那契数列的数量

转载 作者:行者123 更新时间:2023-11-30 17:04:31 26 4
gpt4 key购买 nike

#include <stdio.h>

int fibonacci(int n) {
int count, n1 = 0, n2 = 1, fib = 0;
printf("Given number: ");
scanf("%d", &n);
count = 0;
while (count < n) {
fib = n1 + n2;
n1 = n2;
n2 = fib;
++count;
if (n > fib)
printf("%d ", fib);
}
return 0;
}

int main() {
int szam;
fibonacci(szam);
return 0;
}

我已经走到这一步了,我只是不知道如何计算数字。例如:
输入:10
输出:1 2 3 5 8

但应该是:
在:10
输出:5

最佳答案

代码中的停止条件不正确:您在 n 之后停止当您计算出大于 n 的斐波那契数时,斐波那契数已被计算,而不是停止。 .

这是更正后的版本:

#include <stdio.h>
int count_fibonacci(unsigned long long int n) {
int count = 0;
unsigned long long n1 = 1, n2 = 1, fib = 1;
while (fib < n) {
count++;
fib = n1 + n2;
n1 = n2;
n2 = fib;
}
return count;
}

int main(void) {
unsigned long long n = 0;
printf("Given number: ");
scanf("%llu", &n);
printf("%d\n", count_fibonacci(n));
return 0;
}

它打印 5输入 10 ,因为您的斐波那契数列是:1 2 3 5 8... .

但标准序列通常定义为 1 1 2 3 5 8... ,它应该返回 6 。您可以通过将初始状态更改为 n1 = 0, n2 = 1, fib = 1 来获得此行为.

关于c - 小于给定 n 的斐波那契数列的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35730930/

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