当前位置:编程学习 > JAVA >>

怎么用递归算28个数

0, 2, 5, 7, 14, 26, 47, 87, 160 ......  求第28位数是多少, 用递归算法实现,在main函数中打印出结果。  请帖上代码 递归算法 递归 --------------------编程问答-------------------- int suan(int n)
{
if(n==0)
return 0;

return suan(n-1)+(n+1);
}
试试吧应该可以 --------------------编程问答-------------------- 不好意思,看错了。。。没看出来有什么规律 --------------------编程问答-------------------- 代码太少了  main方法全部代码 --------------------编程问答-------------------- 第四个数是前三个数的和,加班时间不回复代码 --------------------编程问答-------------------- 代码就不贴了,一定要自己动手才能学的更深刻。
这题不难,规律也很明显,n=(n-1)+(n-2)+(n-3)

第1位: 0
第2位: 2
第3位: 5
第4位: 7
第5位: 14
第6位: 26
第7位: 47
第8位: 87
第9位: 160
第10位: 294
第11位: 541
第12位: 995
第13位: 1830
第14位: 3366
第15位: 6191
第16位: 11387
第17位: 20944
第18位: 38522
第19位: 70853
第20位: 130319
第21位: 239694
第22位: 440866
第23位: 810879
第24位: 1491439
第25位: 2743184
第26位: 5045502
第27位: 9280125
第28位: 17068811 --------------------编程问答-------------------- public class TestJava {
public static void main(String[] args) {
System.out.println(getNumber(28));

}

static int getNumber(int n) {
int a=0,b=2,c=5;

switch (n) {
case 1:
return a;
case 2:
return b;
case 3:
return c;
}
return getNumber(n-1)+getNumber(n-2)+getNumber(n-3);
}
} --------------------编程问答-------------------- 额,好吧自己慢慢觉悟 --------------------编程问答-------------------- 6楼方法运行出来不对啊  我小白 --------------------编程问答--------------------
public static void main(String[] args) {
int sum = getNumber(28);
System.out.println(sum);
}
static int getNumber(int a){
int s = 0;
if(a == 1){
s = 0;
}
if(a == 2){
s = 2;
}
if(a == 3){
s = 5;
}
if(a > 3){
s = getNumber(a-3) + getNumber(a-2) + getNumber(a-1);
}
return s;
}
--------------------编程问答--------------------
public class Digui {
public static void main(String[] args) {
System.out.println(ershiba(0, 2, 5, 9));
}

public static int ershiba(int first, int second, int third, int times) {
if (times == 1) {
return first;
}
if (times == 2) {
return second;
}
if (times == 3) {
return third;
}
return ershiba(first + second + third, first + second * 2 + third * 2,
2 * first + 3 * second + third * 4, times - 3);
}
}
--------------------编程问答-------------------- public class test1 {
// 0, 2, 5, 7, 14, 26, 47, 87, 160 ...... 求第28位数是多少, 用递归算法实现,在main函数中打印出结果。
// 请帖上代码

public static void main(String[] args) {
System.out.println(get(28));
}

public static int get(int n) {

int number = 0;
if (n == 1) {
number += 0;
}
if (n == 2) {

number += 2;
}
if (n == 3) {

number += 5;
}
if (n > 3) {
number = get(n - 1) + get(n - 2) + get(n - 3);
}
return number;
}
}
--------------------编程问答-------------------- public class Test {
//本题的数列规则是前3项之和等于后面一项
int one=0;
int two=2;
int three=5;
public Test(){
System.out.print(one+":"+two+":"+three+":");
}
public void cal(int lun){
if (lun>0){
int temp = one+two+three;
System.out.print(temp+":");
one=two;
two=three;
three = temp;
cal(--lun);
}

/**
 * @param args
 */
public static void main(String[] args) {
Test t = new Test();
t.cal(28);

}

}

你们要不运行一下看看这个 --------------------编程问答-------------------- 要学会利用三元运算符,一行函数体解决问题:

public class OneLine {

public static void main(String[] args) {
System.out.println(oneLine(28));
}
static int oneLine(int n){
return n==1?0:(n==2?2:(n==3?5:oneLine(n-1)+oneLine(n-2)+oneLine(n-3)));
}
}

结果:
17068811
--------------------编程问答--------------------
import java.util.ArrayList;
import java.util.List;

public class Test01 {
public static List list = new ArrayList();

public static void getNumberToList(int n) {
if (n == 1){
list.add(0);
return ;
}
if (n == 2 ){
getNumberToList(n-1);
list.add(2);
}
if(n == 3) {
getNumberToList(n-1);
list.add(5);
}
   if (n > 3){
   getNumberToList(n-1);

int num = Integer.parseInt(String.valueOf(list.get(n - 2)))
+ Integer.parseInt(String.valueOf(list.get(n - 3)))
+ Integer.parseInt(String.valueOf(list.get(n - 4)));
list.add(num );
}


}

/**
 * 得到指定位置的数据
 * @param n
 * @return
 */
public static int getNum(int n) {
if (n == 1){  // =1 返回0
return  0;
}else if  (n == 2 ){ //=2返回2
return 2 ;
}else if(n == 3) { //=3返回5
return 5 ;
}else { //否则返回前面3个数之和 ,递归
    return getNum(n-1) + getNum(n-2) + getNum(n-3) ;
}

}

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub

getNumberToList(28) ;
 System.out.println(list) ;
 System.out.println(getNum(8));
}

}


结果:
[0, 2, 5, 7, 14, 26, 47, 87, 160, 294, 541, 995, 1830, 3366, 6191, 11387, 20944, 38522, 70853, 130319, 239694, 440866, 810879, 1491439, 2743184, 5045502, 9280125, 17068811]
87
--------------------编程问答-------------------- import java.util.ArrayList;
import java.util.List;

public class TestJava {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
       //第i位的值

       List<Integer> list = new ArrayList<Integer>();
       list.add(0);
       list.add(2);
       list.add(5);
       for(int i=3;i<33;i++){
     int sum = sumList(list);
     list.set(0, list.get(1));
     list.set(1,list.get(2));
     list.set(2, sum);
     System.out.println("第"+(i+2)+"位"+sumList(list));
       }
}
    
public static int sumList(List list){
int sum=0;
for (int i = 0; i < list.size(); i++) {
sum+=(Integer)list.get(i);
}
return sum;
}
} --------------------编程问答-------------------- 楼主,几分钟的事情,求给分!!! --------------------编程问答--------------------


public static void main(String[] args) {
// 0, 2, 5, 7, 14, 26, 47, 87, 160 ... 第28个数 
int[] arr = new int[28];
arr[0] = 0;
arr[1] = 2;
arr[2] = 5;
arr[3] = 7;
for (int i = 4; i <= 27; i++) {
arr[i] = arr[i - 1] + arr[i - 2] + arr[i - 3];
System.out.println("第" + (i + 1) + "个数:" + arr[i]);
}

}


为毛我用了个数组啊 好吧 没看清题目要求
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,