小编Aur*_*han的帖子

Java中的递归它是如何工作的?

请在以下代码中解释recursion语句的工作原理.

int factR(int n) {
    int result;

    if(n==1) return 1;

    result = factR(n-1) * n;
    return result;
}
Run Code Online (Sandbox Code Playgroud)

我的理解是:

在上面的语句中,该factR(n-1)方法调用自身直到结束.假设我们想得到6的阶乘,它将作为参数发送给这个方法.它将作为参数接收n,n然后将检查其值; 如果是1那么将返回1.但是如果它不是1,就像我们的情况那样它是6,则递归语句将运行.

现在我遇到的问题是第一次n-1变为5并且乘以n,其保持值6,然后它变为30.现在30将GO在哪里?

然后该方法将调用自身,此时间n-1变为4,然后它乘以nIF保持值"6"然后4*6 = 24,我认为这是错误的.因为如果我们经历这种方式,那么在下一次调用中,进程将是类似的,n-1将变为3*n,其中IF保持相同的值,即6然后它将变为3*6 = 18.然后下一次调用发生并且n-1变为2我们乘以并假设它n保持值6然后2*6 = 12,并且最后调用n-1= 1*n = 6.我的观点是很明显n-1会减小值,n-1即6-1 = 5然后5-1 = 4然后4-1 = 3然后3-1 = 2和2-1 = 1.但问题是,n每当方法调用自身时,它的值是多少?

如果你说当第一次乘法发生时,即"n-1"变为5然后乘以6 = 30而30则存储在"n"然后在下一次调用中5-1 = 4*30 = 120,然后4- 1 = 3*120 = 360,然后3-1 …

java recursion

6
推荐指数
2
解决办法
315
查看次数

标签 统计

java ×1

recursion ×1