递归数字序列

时间:2015-03-26 18:15:07

标签: java recursion sequence

我想制作一个程序来输出这个数字序列:(2),(5),(11),(23),...
其中x i = 2 * x i-1 + 1,x 0 = 2.

这是我的代码:

    public static int num(int n){
        if(n <= 0)
            return 2;
        else
            return ((2 * 2)+1);

    }

我无法找到输出数字11,23及之后的方法。如果我设置一个计数器变量并连续循环第二个返回语句,它会工作吗?

1 个答案:

答案 0 :(得分:2)

很好看,因为你希望它是递归的,让它递归!

public static int num(int n){
    if(n <= 0)
        return 2;
    else
        return (2 * num(n-1))+1; //Recursive call here
}

使用快速runnable方法检查它:

public static void main(String[] args){
    for(int i = 0; i < 10; i++){
        System.out.println("num(" + i + ")=" + num(i));
    }
}

输出:

num(0)=2
num(1)=5
num(2)=11
num(3)=23
num(4)=47
num(5)=95
num(6)=191
num(7)=383
num(8)=767
num(9)=1535