首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

Fibonacci数列C语言算法有关问题

2013-04-02 
Fibonacci数列C语言算法问题请各问各位前辈,用C语言编一个程序计算出斐波那契数列的第N位数,如果不用递归

Fibonacci数列C语言算法问题
请各问各位前辈,用C语言编一个程序计算出斐波那契数列的第N位数,如果不用递归算法而是用循环的话,应该如何实现呢(最好也不用数组)?我想了一个下午都没有任何进展,请各位帮忙看看。感激不尽!
   下面我做了个函数调用的测试,但关键部位还是想不出来。

#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 i, sum = 0;

    if(n <= 2)
        sum = 1;
    else
        for(i = 2; i <= n; i++)
        {
        }

    return sum;
}
算法 C 斐波那契
[解决办法]
#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;

}

[解决办法]
引用:
请各问各位前辈,用C语言编一个程序计算出斐波那契数列的第N位数,如果不用递归算法而是用循环的话,应该如何实现呢(最好也不用数组)?我想了一个下午都没有任何进展,请各位帮忙看看。感激不尽!
   下面我做了个函数调用的测试,但关键部位还是想不出来。

C/C++ code?123456789101112131415161718192021222324252627282……

设定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;
    }
}

热点排行