递归数列

Recursive Number Sequence

我想编写一个程序来输出这个数字序列:(2),(5),(11),(23),...
其中 xi = 2*xi-1 + 1,并且 x0=2.

这是我的代码:

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

    }

我无法找到一种方法来输出数字 11、23 及以后的数字。如果我设置一个计数器变量并不断循环第二个 return 语句,它会起作用吗?

既然你希望它是递归的,那就让它递归吧!

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

用一个快速运行的方法来检查它:

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