5 回答
TA贡献1772条经验 获得超8个赞
public static void print(int n){
if((n = n << 1) <= 5000) {
System.out.print(n + " ");
print(n);
System.out.print(n + " ");
} else {
System.out.println();
}
}
TA贡献1804条经验 获得超2个赞
既然不能用循环,楼主必须要想到这个其实是考察你递归式的运用
public static int TowPowWithN(int n) {
int sum = TowPowWithN(n, 2, 0); return sum; } public static int TowPowWithN(int n, int x, int sum) { if (n == 0) { return 0; } int y = n * x; System.out.println(y); sum += y; if (y >= 5000) { return sum; } else { x *= 2; return TowPowWithN(n, x, sum); }
倒序打印我是没想出来 楼主可以自己想想了
TA贡献1876条经验 获得超6个赞
这个..明显考递归的啦!
public class test{
static void test(int n){
n*=2;
if(n<=5000)
{
printf("%d,",n);
test(n);
printf("%d,",n);
}
else
{
printf("\n");
return;
}
}
static void main(int argc,String args[])
{
}
}
TA贡献1796条经验 获得超4个赞
这个主要考察的是递归的理解 因为递归 有个入栈和出栈的过程哈!
public class Test{
static void test(int n){
n*=2;
if(n<=5000)
{
System.out.print(n);
test(n);
System.out.print(n);
}
else
{
System.out.println();
return;
}
}
static void main(String args[])
{
if(args.length<2)
System.out.println("输入n");
else
test(Integer.parseInt(args[1]));
}
}
如果正确,请选为最佳答案 谢谢
TA贡献1865条经验 获得超7个赞
//要求是得到X以後先打印X的結果,再正序打印累加序列的話。需要在計算的時候得用減法,保證遞歸棧的順序正確。 int Count(int result, int X, int N, boolean isFirstEnter ){ if ( isFirstEnter ){ if ( result > 0 ){ X++; result -= 2*X*N; Count(result, X, N, isFirstEnter); System.out.println(2*X*N); } else{//最終結果已經得到,d System.out.println(X); } if ( result == 5000 ){//正序打印完畢,開始第二次遞歸,並進行倒序打印 Count(result, 1, N, false); } } else{ if ( result > 0 ){ System.out.println(2*X*N); X++; result -= 2*X*N; Count(result, X, N, isFirstEnter); } } } int invertedOrderPrint(int result, int X, int N){ if ( result - 2*X*N > 0 ){ X++; result invertedOrderPrint() } }
添加回答
举报