递归数字序列



我想制作一个程序来输出这个数字序列:(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

最新更新