递归数列
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
我想编写一个程序来输出这个数字序列:(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