注册 登录
编程论坛 VC++/MFC

帮帮忙啊,谢谢各位

yangliu1988 发布于 2010-12-04 21:46, 483 次点击
使用f(1) = 1, f(2) = 1, f(n > 2) = f(n - 1) + f(n - 2),求结果,如输入7得13,我的不行
#include <iostream>
using namespace std;
int main()
{ int a[20];int n,i;
  while(cin>>n)
  { a[0]=1;a[1]=1;
    for(i=3;i<n;i++)
     a[i-1]=a[i-2]+a[i-3];
     cout<<a[i-1]<<endl;
    }
    return 0;
}   
   
2 回复
#2
ytchfp2010-12-06 15:36
for(i=3;i<n;i++)应该是for(i=3;i<=n;i++)或for(i=3;i<n+1;i++)
#3
zhoufeng19882010-12-06 17:27
这题用递归来做更容易理解一点~
程序代码:
#include <iostream>

using namespace std;

int Add( int);

int main()
{
    int a[20];
    int n,i;
  while( cin >> n)
  {
      a[0] = 1;
      a[1] = 1;
     
      if ( n > 2)
      {
              a[ n - 1] = Add( n);
              cout << a[ n - 1] << endl;
      }
   }
  
   return 0;
}   

int Add( int n)
{
    if ( n == 2 || n == 1)
    {
        return 1;
    }
    else
    {
        return Add( n -1) + Add( n - 2);   
    }   
}


1