public static int sum(int i, int result) { result=result+i; i++; if(i<=100) { sum(i, result); } return result; } public static void main(String[] arges) { int nsum=sum(0,0); System.out.println(nsum); }为什么if词句中调用自已前要加个接收。不加的话结果就为0在调用自已的时候i值到了100又会回到0
感觉你这个思路比较清奇,不是太符合递归的宗旨——问题规模越来越小,直到一个显而易见的能解决的地步,相反,越是递归你这规模越大,result和i都变大,另外一个值得商榷的地方是,问题的规模(100),不是参数化的,那么这个算法无法满足参数化调用,所以,你这个看起来是递归的形式,但没有领会递归的灵魂。
重新整理一下思路,函数原型:
int sum(int i),我不知道怎么算,但是我知道,它等于sum(i-1) + i,sum(i-1)我还是不知道怎么算,但是我知道,当它为0的时候我就能算了,显而易见,sum(0)应该等于0,代码如下:
注意这里问题规模是参数话的,也就是说其他函数调用你,可以传100,也可以传1000,还可以传其他值,不像你的,如果想算101,你要修改一下代码才可以,问题是我会像下面18行这样循环调用你: