java递归求阶乘,哪错了?


public void jiecheng (int result,int k){
        if(k==1){
            System.out.println(result);
        }else {
            result = result *(k-1);
            jiecheng(result, k-1);
        }
    }

img

点击方法就跳到这了:

img

截一下完整代码,我觉得你函数结构可能有错

微调了一下,现在大概能跑了

img

package com.csdn;

public class q7505075 {

    public  void jiecheng(int result, int k) {
        if (k == 1) {
            System.out.println(result);
        } else {
            result = result * k;
            jiecheng(result, k - 1);
        }
    }

    public static void main(String[] args) {
        q7505075 a = new q7505075();
        a.jiecheng(1, 5);
    }
}

k和result分别代表什么,如果result代表的是输出,为什么要在函数参数列表写,不符合代码规范

public void jiecheng(int result,int k){
    if(k==1){
        System.out.println(result);
    }
    else{
        result = result * k;
        jiecheng(result,k-1);
        }
}

jiecheng(1,5)

一个参数就可以了,两个参数自己把自己给搞乱了。


    public int jiecheng (int result){
        if(result==1){
            return result;
        }else{
            return result * jiecheng(result-1);
        }
    }