小于给定 n 的斐波那契数的数量
The number of Fibonacci numbers lesser than a given n
#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;
}
它为 10
的输入打印 5
,因为您的斐波那契数列是:1 2 3 5 8...
.
但标准序列通常定义为1 1 2 3 5 8...
,应该return6
。您可以通过将初始状态更改为 n1 = 0, n2 = 1, fib = 1
.
来获得此行为
添加了计算斐波那契数列的变量fib_count(没有测试这个...)
#include <stdio.h>
int fibonacci(int n)
{
int n1=0, n2=1, fib=0, fib_count;
printf("Given number: ");
scanf("%d",&n);
fib_count = 0;
while (fib<n)
{`
fib=n1+n2;
n1=n2;
n2=fib;
fib_count += 1;
printf("%d ",fib);
}
printf("Fibonacci numbers smaller than %d : %d ",n, fib_count);
return 0;
}
int main(){
int szam;
fibonacci(szam);
return 0;
}
#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;
}
它为 10
的输入打印 5
,因为您的斐波那契数列是:1 2 3 5 8...
.
但标准序列通常定义为1 1 2 3 5 8...
,应该return6
。您可以通过将初始状态更改为 n1 = 0, n2 = 1, fib = 1
.
添加了计算斐波那契数列的变量fib_count(没有测试这个...)
#include <stdio.h>
int fibonacci(int n)
{
int n1=0, n2=1, fib=0, fib_count;
printf("Given number: ");
scanf("%d",&n);
fib_count = 0;
while (fib<n)
{`
fib=n1+n2;
n1=n2;
n2=fib;
fib_count += 1;
printf("%d ",fib);
}
printf("Fibonacci numbers smaller than %d : %d ",n, fib_count);
return 0;
}
int main(){
int szam;
fibonacci(szam);
return 0;
}