一个递归算法题目

loveu13l4 2008-09-26 02:20:12
假如有一个数组的规律为:1,1,2,3,5,8,13,21,34......。求第30个数的值(java)
...全文
331 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChDw 2008-10-16
  • 打赏
  • 举报
回复
这个数列用递归是最笨的方法,效率低得离谱。直接一个循环就完事还需要递归来做什么。
ipfqhhfuj 2008-10-15
  • 打赏
  • 举报
回复
斐波那契数列
在方法内递归调用就行啦
junlizhang 2008-09-28
  • 打赏
  • 举报
回复
public class Test {
public static void main(String[] args) {
int [] j = new int[31];
j[0] = 0;
j[1] = 1;
for(int i = 2 ; i <= 30 ; i++){
j[i] = j[i - 1] + j[i -2];
System.out.println("第" + i + "个数为 : " + j[i]);
}
}
}
xiixjwwj 2008-09-27
  • 打赏
  • 举报
回复
public class i {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] i6=new int[30];
i6[0]=1;
i6[1]=1;
for(int i4=2;i4<30;i4++){
i6[i4]=i6[i4-1]+i6[i4-2];
System.out.println("第"+(i4+1)+"个数值为:"+i6[i4]);

}
}

答案是 第3个数值为:2
第4个数值为:3
第5个数值为:5
第6个数值为:8
第7个数值为:13
第8个数值为:21
第9个数值为:34
第10个数值为:55
第11个数值为:89
第12个数值为:144
第13个数值为:233
第14个数值为:377
第15个数值为:610
第16个数值为:987
第17个数值为:1597
第18个数值为:2584
第19个数值为:4181
第20个数值为:6765
第21个数值为:10946
第22个数值为:17711
第23个数值为:28657
第24个数值为:46368
第25个数值为:75025
第26个数值为:121393
第27个数值为:196418
第28个数值为:317811
第29个数值为:514229
第30个数值为:832040
TheSameRiver 2008-09-26
  • 打赏
  • 举报
回复
斐波那契数列、兔子数列
短路与写错了,应该是短路或,自己汗一个!

public class fbnq
{
public static void main(String[]args)
{
System.out.println(fb(30));
}
public int fb(int a)
{
if(a==1||a==2)
{
return 1;
}else{
return fb(a-1)+fb(a-2);
}
}
}

TheSameRiver 2008-09-26
  • 打赏
  • 举报
回复
斐波那契数列

public class fbnq
{
public static void main(String[]args)
{
System.out.println(fb(30));
}
public int fb(int a)
{
if(a==1&&a==2){
return 1;
}else{
return fb(a-1)+fb(a-2);
}
}
}
ZXEOC 2008-09-26
  • 打赏
  • 举报
回复
一个家庭作业,你们也回答这么积极
sgdb 2008-09-26
  • 打赏
  • 举报
回复
菲波纳奇数列, 课后作业吧。
  • 打赏
  • 举报
回复
C写的兔子数列,也称斐波那契数列,一个递归就OK了。
(斐波那契数列的M应该设置为2)
#include<stdio.h>
#include <stdlib.h>

int f(int m ,int d)
{
if(m>=d)
return 1;
else
return f(m,d-1)+f(m,d-m);
}

void main()
{
int num;
num=f(2,6);
printf("The are %d pair of rabbit finnaly.",num);
}
awusoft 2008-09-26
  • 打赏
  • 举报
回复
这个叫那个什么什么数列吧.
public class Test
{
int index=2;
int i=1;
int b=1;
int flag;
public static void main(String[]args)
{
Test t = new Test();
t.flag=30;
System.out.println(t.flag+"---"+t.get());
}

public int get()
{
int c =i+b;
b=i;
i=c;
index++;
if(index==flag)
{
return c;
}else
{
return get();
}

}
}

注意,别太大了,会溢出,求某个数还好说,要是求多少位以前的和那就麻烦了,网上的,多用百度

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧