仍在学习,我似乎无法将头脑包裹在看似简单的任务上。 computeMethods方法是im totaly难倒的地方,但是反向的方法我只是不断反复获得相同的整数。
/****************************
* For Method Computemethods1 i must compute series
* b(x)=1/3+2/5+3/7..... +x/2x+1
* For method ComputeMethod2
* 1/2+2/3+......... x/(x+1)
*******************************/
public static int computeMethod1(int x){
if (x==0)
return 0;
if (x==1)
return 1;
return computeMethod1(x-1/3/(x-1))+computeMethod1(x-2/3/(x-2));
}
public static int computeMethod2(int x){
if (x==0)
return 0;
return computeMethod2((x-1)/(x-1)+1)+computeMethod2((x-2)/(x-2)+1);
}
/********************
* For method reverseMethod i must reverse a user given int
**********************/
public static int reverseMethod(int x){
int reversedNum=0;
if (x!=0)
return x;
reversedNum=reversedNum *10 +x%10;
return reversedNum+reverseMethod(x/10);
}
/******************
* For method sumDigits i must use recursion
* to sum up each individual number within the int
********************/
public static long sumDigits(long n){
if( n==0)
return 0;
if (n==1)
return 1;
else
return n+sumDigits(n-1);
}
}
答案 0 :(得分:2)
对于反向方法,您使用的是:if (x!=0) return x;
您可能需要使用:if (x==0) return x
。所以逻辑是,如果给定的参数是0,则返回0,否则返回反转的数字。
float
或double
,并处理正确结果的操作优先级,因此{{ 1}}将与(x+1)/2
不同。
答案 1 :(得分:0)
对于您的每种方法,请按照小代码的代码进行操作。
例如,computeMethod1
应返回:
1/3
, x == 1
,而目前只返回1
(注意,返回类型必须是int
以外的其他内容。)
1/3 + 2/5
x == 2
。
1/3 + 2/5 + 3/7
x == 3
。
对于每个x
,请注意我们如何使用之前的结果,即computeMethod1(x - 1)
。
当您遇到似乎没有达到预期效果的代码时,请使代码更简单,更简单,直到您可以缩小问题范围,然后希望问题显而易见,或者在线文档可以告诉你。