Python3: 递归函数在编译模式下没有返回值

Python3: Recursive functioin not returning value in compiler mode

def factorial(n):
    if n == 0:
        return(1)
    else:
        return(n * factorial(n-1))

factorial(5)

当我在编译器中 运行 时,此代码不会 return 5 或任何其他值的阶乘,但在解释器中 运行 时 return 是正确的值模式。

我使用递归的其他程序也发生了同样的事情。

def insert(seq,k):
    pos = 1
    while pos > 0 and seq[pos] < seq[pos-1]:
        (seq[pos], seq[pos-1]) = (seq[pos-1], seq[pos])
        pos = pos - 1

def isort(seq,k):
    if k > 1:
        isort(seq,k-1)
        insert(seq,k-1)
    else:
        return

def InsertionSort(seq):
    isort(seq,len(seq))
    return(seq)

InsertionSort([4,56,15,86,84,3,51,2,4,1,54,5,1,87,5,2,7,15,65])

不好意思问了一些小问题,刚开始学习python

尝试打印您的结果。 例子:print(factorial(5))

其实返回的,只是没有使用返回值

interactive 解释器中,REPL(a) 将输出表达式的值,如果它不是 None .

不是情况运行一个脚本,你需要显式打印它:

print(factorial(5))

(a) 这是 Read-Eval-Print-Loop 你应该 额外 注意那个 Print 位, 在这种情况下很重要:-)