【问题标题】:How Recursion function deal with local variable inside fnction when function call it self?当函数调用自身时,递归函数如何处理函数内部的局部变量?
【发布时间】:2015-11-30 17:01:45
【问题描述】:

我见过阶乘 prgrm 。我的问题是,每当调用递归时,如何在每个函数调用期间检索变量值? Nd 为什么当数字达到 1 时我们需要返回 1 .?如果它返回 1 那么为什么它不显示输出 1

【问题讨论】:

    标签: c recursion


    【解决方案1】:

    例如代码:

    int fact(int n)
    {
        if(n <= 1) return 1;
        return n*fact(n-1);
    }
    

    n 是局部作用域的,所以在每个递归调用中都设置为函数参数中的检索,所以 fo 3:

    for fact(3) -> n1 = 3
    for fact(2) -> n2 = 2
    for fact(1) -> n3 = 1
    
    > Then fact(3) = n1*n2*n3 => 3*2*1 = 6
    

    【讨论】:

    • Ya gd 递归将在 1 处停止,但是.. 此处 fact(1) 的值将返回到事实 (2),而对于 fact(2),它将喜欢 2*fact(1) nd here fact(1) 是 1 所以 fact(2) 将返回 2*fact(1)=2 所以 fact 将返回 2 到 fact(3) nd fact(3) 将像这样计算 3*fact(2)=3*2 =6 所以最后的 ans 6 返回了我是正确的???
    • 是的@DarshanMakwana,这正是我在答案中解释的:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2015-11-13
    相关资源
    最近更新 更多