递推代替递归
#include<iostream.h>
void main(){
int A[1001]={0},n;
A[0]=A[1]=1;
cin>>n;
for(int i=2;i<=n;i++)
{
for(int j=0;j<=i/2;j++)
A[i]=A[i]+A[j];
}
cout<<A[n]<<endl;
}
用全局数组保存递归中产生的结果 解决超时问题
#include<iostream.h>
static int gold[1000]={0};
int count(int m)
{ int count2=0;
if(m==1) return 1;
if(m==0) return 1;
int i;
for( i=0;i<=m/2;i++)
{
if
(gold[i]!=0) count2=count2+gold[i];
else
count2=count2+count(i);
}
gold[m]=count2;
return count2;
}
int main()
{
int N;
int i;
cin>>N;
cout<<count(N);
return 0;
}