首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2ME开发 >

求递归写法,该如何解决

2013-09-24 
求递归写法//a01 a11 a2a0+a1 a3a2+a1 a4a3+a2 a5a4+a3 a6a5+a4 a7a6+a5 a30a29+a28求出给出数的

求递归写法
//a0=1 a1=1 a2=a0+a1 a3=a2+a1 a4=a3+a2 a5=a4+a3 a6=a5+a4 a7=a6+a5 a30=a29+a28

求出给出数的结果。例如输入30 求出a30的结果。。。递归写法。。 递归
[解决办法]
差不多应该是这样吧。


private static int num=30;
public static void main(String[] args) {
int a0=0;
int a1=1;
show(a0, a1,num);
}

public static int show(int x,int y,int num){
if(num>=0){
int z = show(y, x+y, --num);
return z;
}else{
System.out.println(x+y);
return 0;
}
}

[解决办法]
楼上+1
其实不一定要用递归的,递归容易造成性能问题
public class jiajia {
public static void main(String[] args) {
int a = 1, b = 1;
for (int i = 1; i <30; i++) {
b += a;
a = b - a;
}
System.out.println(a);
}
}

[解决办法]
不是最好的,但是可以实现你的要求,参考下吧。
package com.test;

import java.util.ArrayList;
import java.util.List;

/**
 * //a0=1 a1=1 a2=a0+a1 a3=a2+a1 a4=a3+a2 a5=a4+a3 a6=a5+a4 a7=a6+a5 a30=a29+a28
 * @author gp
 */
public class Test {

static int num = 0;// 计数器
static int result = 0; // 结果
static List<Integer> list = new ArrayList<Integer>();

public static void main(String[] args) {
int a = 30;
test(a);
System.out.println("a"+a+" = " + list.get(num - 1));
}
/**
 * 通过递归进行计算
 * @param value
 */
public static void test(int value){
while(value > num){
if(num == 0){
list.add(1);
} else if(num == 1){


list.add(2);
} else {
list.add(list.get(num - 1) + list.get(num - 2));
}
num++;
test(value);
}
}
}

热点排行