Fibonacci数列C语言算法问题
请各问各位前辈,用C语言编一个程序计算出斐波那契数列的第N位数,如果不用递归算法而是用循环的话,应该如何实现呢(最好也不用数组)?我想了一个下午都没有任何进展,请各位帮忙看看。感激不尽!
下面我做了个函数调用的测试,但关键部位还是想不出来。
#include <stdio.h>算法 C 斐波那契
unsigned long test_fibonacci(int n);
int main(void)
{
int n;
printf("Enter a positive integer (q to quit): ");
while(scanf("%d", &n) == 1)
{
printf("\nThe %dth number in the fibonacci numbers is %lu",
n, test_fibonacci(n));
printf("\nEnter a positive integer (q to quit): ");
}
puts("\nDone!");
return 0;
}
unsigned long test_fibonacci(int n)
{
int i, sum = 0;
if(n <= 2)
sum = 1;
else
for(i = 2; i <= n; i++)
{
}
return sum;
}
[解决办法]
#include<stdio.h>
int main()
{
int Fibonacci(int x);
int m,n;
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d",&n);
printf("%d ",Fibonacci(n));
}
return 0;
}
int Fibonacci(int x)
{
if(x==1
[解决办法]
x==2)
x=1;
else
x=Fibonacci(x-1)+Fibonacci(x-2);
return x;
}
[解决办法]
设定2个变量a,b表示前2项,用循环不断的更新a和b就行了
#include <stdio.h>
unsigned long test_fibonacci(int n);
int main(void)
{
int n;
printf("Enter a positive integer (q to quit): ");
while(scanf("%d", &n) == 1)
{
printf("\nThe %dth number in the fibonacci numbers is %lu",
n, test_fibonacci(n));
printf("\nEnter a positive integer (q to quit): ");
}
puts("\nDone!");
return 0;
}
unsigned long test_fibonacci(int n)
{
int a,b;
a = b = 1;
unsigned long t = 0;
int target;
if (n<=2) {
return (unsigned long)a;
} else {
for (int ind=2;ind<n;ind++) {
t = a+b;
a = b;
b = t;
}
return t;
}
}