python - 为什么阶乘的尾递归不返回任何内容?

标签 python recursion

我使用尾递归进行阶乘,它返回“无” - 为什么

def fact(n, k):
    print "n = %d k = %d" % (n,k)
    if n == 1:
        print "k final = ", k
        return k

    else:
#        print n
        print k
        fact(n-1, k*(n-1) )

a =(fact(4, 4) ) 
print a

最佳答案

您尚未在 else 子句中返回值 -

else:
    fact(n-1, k*(n-1) )

这应该是这样的

else:
    return fact(n-1, k*(n-1) )

关于python - 为什么阶乘的尾递归不返回任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32748497/

相关文章:

Python - Django - 从开始日期开始过滤并计算第一年的所有人

python - 在 Python 中将 for 循环转换为递归

python - 有什么方法可以使递归函数更快吗?

java - 将单词逐个字符递归地添加到 LinkedHashMap

c++ - 为什么这个快速排序实现给出了一个奇怪的输出

python - 我在哪里放置 python 库文件夹?

python - 在条件列表上使用逻辑AND的PySpark DataFrame过滤器-Numpy All Equivalent

python - 编写我自己的 Linux 发行版

Python 的闭包——赋值前引用的局部变量

c - 递归scanf死循环