public class Help { public static void main(String[] args) {
int total=0;
for(int i=1;i<=30;i++){
total+=b(i);
}
System.out.println(total);
}
static int b(int c){
if(c==1)return 1;
return b(c-1)*2;
}
}以上是代码,就是2^1+2^2+2^3+……+2^30的值(其中“2^X”表示2的多少次方),问有没有办法不用循环只用两次递归达到一样的目的
public static int value(int n) {
if (n==1) return 2;
return 2*value(n-1)+2;
}
public static long cacl(int n) {
if (n == 0) {return 1;}
return cacl(n-1)*2 + 1;
}System.out.println(cacl(30)); //方法调用
=2^0+2^1+2^2+2^3+……+2^30
= 1+2*(2^0+2^1+2^3+...+2^29)
= 1 + 2*calc(29)
所以递归公式就是
cacl(n) = 1+2*cacl(n-1)
哭笑不得,你没认真看我的答案吧
return 2*value(n-1)+2; 就是这个意思