Python论坛  - 讨论区

标题:[python-chinese] 一个例子引发的疑问

2006年03月20日 星期一 16:42

风向标 vaneoooo at gmail.com
Mon Mar 20 16:42:37 HKT 2006

def fib(n):
    print 'n =', n
    if n > 1:
        return n * fib(n - 1)
    else:
        print 'end of the line'
        return 1

关于这样一个很简单的例子。
我对循环思路上还有些困惑
以下是我的思路:

fib(5)调用函数以后
执行到return n * fib(n - 1)就会停止,执行流程会暂停当前的函数运行再行另开流程处理fib(n-1)
直到最后n == 1
然后打印end of the line

那么此时其他流程都接到了上一个流程回来的反馈.
那么 return n * fib(n - 1)一句最后都将返回到最开始的那个流程
return语句实际上也就会是return 5*4*3*2*1

思路不知道正确否.
下面return 1是取返回真?具体又是什么意义呢?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060320/150f495d/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年03月20日 星期一 16:58

Leo Jay python.leojay at gmail.com
Mon Mar 20 16:58:18 HKT 2006

Err,这个不叫循环,叫递归.

fib(5)调用函数以后执行到return n * fib(n - 1)时,程序并不是停止,而是再次进入fib函数进行计算,与前一次不同的是实际参数的值变化了.

下面的return 1并不是返回真的意思,

但凡递归的程序都一定要有一个递归的结束条件,否则递归永远不会结束,将会引起栈溢出.
在这里,n等于1就是递归结束条件,而return 1中的1表示fib(1)的结果是1,也就是1的阶乘结果为1

--
Best Regards,
Leo Jay

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年03月20日 星期一 17:02

helium helium.sun at gmail.com
Mon Mar 20 17:02:16 HKT 2006

一个很简单的递归,建议你看些讲基础原理的书

On 3/20/06, 风向标 <vaneoooo at gmail.com> wrote:
>
>  def fib(n):
>     print 'n =', n
>     if n > 1:
>         return n * fib(n - 1)
>     else:
>         print 'end of the line'
>         return 1
>
> 关于这样一个很简单的例子。
> 我对循环思路上还有些困惑
> 以下是我的思路:
>
> fib(5)调用函数以后
> 执行到return n * fib(n - 1)就会停止,执行流程会暂停当前的函数运行再行另开流程处理fib(n-1)
> 直到最后n == 1
> 然后打印end of the line
>
> 那么此时其他流程都接到了上一个流程回来的反馈.
> 那么 return n * fib(n - 1)一句最后都将返回到最开始的那个流程
> return语句实际上也就会是return 5*4*3*2*1
>
> 思路不知道正确否.
> 下面return 1是取返回真?具体又是什么意义呢?
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060320/24428e41/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号