作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
#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/
我是一名优秀的程序员,十分优秀!