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()
}
}添加回答
举报
