随笔-60  评论-98  文章-0  trackbacks-0

费波那其数列,1,1,2,3,5……编写程序求第十项。可以用递归,也可以用其他方法,但要说明你选择的理由。


#include <stdio.h>

int Pheponatch(int);

 

int main()

{

   printf("The 10th is %d",Pheponatch(10));

   return 0;

}

 

int Pheponatch(int N)

{

int a[10];//int a[N]不可以编译器无法知道数组大小
a[0]=1;
a[1]=1;
for (int i=2;i<N;i++)
{
 a[i]=a[i-1]+a[i-2];
}
return a[N-1];

}

 

posted on 2006-08-29 11:10 创建更好的解决方案 阅读(1710) 评论(6)  编辑 收藏 引用

评论:
# re: sony笔试题-3 费波那其数列 2007-05-25 14:12 |
老子不会做,因为我不知道什么是xx数列,不厚道,解释一下那个数列不就行了.  回复  更多评论
  
# re: sony笔试题-3 费波那其数列 2007-05-25 14:15 |
难道是1,1,1+1,1+2,2+3,3+5,前一项加后一项就是再后面一项?那我会了,这个不难的啊.  回复  更多评论
  
# re: sony笔试题-3 费波那其数列 2007-10-29 18:42 | 张旋
用指针就可以解决你说的编译器不认识数组维数问题了。用malloc动态分配内存  回复  更多评论
  
# re: sony笔试题-3 费波那其数列 2007-10-31 13:15 | 创建更好的解决方案
@张旋
呵呵,现在改用vector了,比指针安全,清理起来还方便,你说呢,呵呵  回复  更多评论
  
# re: sony笔试题-3 费波那其数列 2008-01-16 11:08 | Icat
int *a=new int[N];
...
delete[] a;
vector 方便一点,分配内存灵活一点
//------------------
int a=1,b=1,c=2;
for(int i=2,i<N,++i)
{
c=a+b;
a=b;
b=c;
}
适合题目,减少内存,但没法保存数列
int Pheponatch(int N)
{
if(N<=2)
return 1;
else
return Pheponatch(N-1)+Pheponatch(N-2);
}
递归解法,没测试过
  回复  更多评论
  
# re: sony笔试题-3 费波那其数列 2008-01-16 12:39 | Icat
想了想,觉得这问题不是考解法,而是考那个选择的理由  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理