2011-05-08 122 views
1
#include<iostream> 

int* fib(int); 

int main() 
{ 
    int count; 
    std::cout<<"enter number upto which fibonacci series is to be printed"<<std::endl; 
    std::cin>>count; 
    int *p=new int[count]; 
    p=fib(count); 
    int i; 
    for(i<0;i<=count;i++) 
     std::cout<<p[i]<<std::endl; 
    return 0; 
} 

int* fib(int d) 
{ 
    int *ar=new int[d]; 
    int p=-1,q=1,r; 
    int j; 
    for(j=0;j<=d;j++) 
    { 
     r=p+q; 
     ar[j]=r; 
     p=q; 
     q=r; 
    } 
    return ar; 
    delete ar; 
} 

该程序打印斐波那契数列中的系数。请分享一些想法,我该如何转换这个程序来查找两个数字之间的斐波那契数列。两个数字之间的斐波那契数列

+5

在这么小的代码中可以创建多少内存泄漏和其他错误?这段代码不配称为C++。 – Sjoerd 2011-05-08 11:50:20

+1

@Sjoerd我们[讨论](http://stackoverflow.com/questions/5927023)这样的问题已经有了相同的代码。 – Howard 2011-05-08 11:56:06

+1

今天当您在另一个问题中发布此代码时,您收到了许多批评。然而,你发布相同的代码,而不打扰纠正它 - 我会说这是对论坛的滥用 – davka 2011-05-08 11:56:07

回答

5

如果(5*N*N + 4)(5*N*N - 4)对于给定的N> = 0是一个完美的正方形,那么数字是斐波那契。使用这种方法在两个数字之间生成斐波那契数列。

+0

也许链接到一篇文章解释这将是有益的。在我的实现中,我会使用这种技术,直到找到两个数字,然后切换到正常的'a,b = b,a + b'算法。 – orlp 2011-05-08 12:09:15

+0

@nightcracker:看看这个:http://math.stackexchange.com/questions/9999/checking-if-a-number-is-a-fibonacci-or-not – 2011-05-08 12:12:44