我想制作一个程序来输出这个数字序列:(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及之后的方法。如果我设置一个计数器变量并连续循环第二个返回语句,它会工作吗?
答案 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