读书人

帮小弟我看看这段代码有啥有关问题死

发布时间: 2012-03-26 15:46:56 作者: rapoo

帮我看看这段代码有啥问题,死活不会出结果!
题目是:计算Tribonaci队列,规则是T(n) = T(n - 1) + T(n - 2) + T(n -3),其中T(0) = T(1) = 1,T(2) = 2。
函数原型:
int Tribonaci(int n) ;

C/C++ code
#include<iostream>#include<assert.h>using namespace std;int Tribonaci(int n) {    assert(n>=0);    if(0==n||1==n)        return 1;    if(2==n)        return 2;    int* pi=new int[n];    pi[0]=1,pi[1]=1,pi[2]=2;    for(int i=3;i<=n;i++)        pi[i]=pi[i-1]+pi[i-2]+pi[i-3];    int m=pi[n];    delete[] pi;    pi=NULL;    return m;}void main(){    int n=Tribonaci(4);    cout<<n<<endl;    system("pause");}

我调试的时候发现,程序运行到delete[]那里就不会再继续了,搞不懂哪里出了错。

[解决办法]
for(int i=3;i<=n;i++)
越界了,pi[n],只能到pi[n-1]

读书人网 >C++

热点推荐