因此,我编写了一个程序以输出用户输入的斐波那契数列的第n个项。但是,当它执行时,它显示错误的数字。不知道该怎么办。
这是我的斐波那契函数循环:
#include <stdio.h>
int main()
{
int x;
int n = 0;
int nn = 1;
int fib;
int counter;
printf("Enter a fibonacci term: ");
scanf("%d", &x);
fibo(x, n, nn, fib, counter);
}
int fibo(int x, int n, int nn, int fib, int counter)
{
for (counter = 0; counter < x; counter++)
{
fib = n + nn;
n = nn;
nn = fib;
}
printf("The %dth term is: %d", x, fib);
}
错误的输出:输入斐波那契术语:4(用户输入值的示例)第四项是:5
所需的输出:输入斐波那契术语:4第四项是:2
这里是您代码的固定版本。您的算法落后了一个。我为第一个元素添加了一个值,并通过一次迭代减少了循环。我在没有警告的情况下使用GCC 9.2编译了代码。
#include <stdio.h>
void fibo(int x, int n, int nn);
int main()
{
int x;
int n = 0;
int nn = 1;
printf("Enter a fibonacci term: ");
scanf("%d", &x);
fibo(x, n, nn);
}
void fibo(int x, int n, int nn)
{
int fib = 0;
for (int counter = 1; counter < x; counter++)
{
fib = n + nn;
n = nn;
nn = fib;
}
printf("The %dth term is: %d", x, fib);
}
#include <stdio.h>
#include <math.h>
int main(void) {
double root5 = sqrt(5.0);
double phi = (1 + root5) / 2;
int n = 8; // Put an Index Here.
int Fn = (int)((pow(phi,n) - pow(-phi, -n)) / (2 * phi - 1 ));
printf("%d: %d\n", n, Fn); // Get a Fibonacci Value here.
return 0;
}
Success #stdin #stdout 0s 4172KB
8: 21
因为顺序是:
Index: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
Fib: 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21