Python 3.x Python3:在编译器模式下不返回值的递归函数

Python 3.x Python3:在编译器模式下不返回值的递归函数,python-3.x,recursion,factorial,Python 3.x,Recursion,Factorial,当我在编译器中运行它时,该代码不返回5的阶乘或任何其他值,但在解释器模式下运行时返回正确的值 同样的事情也发生在我使用递归的其他程序中 def factorial(n): if n == 0: return(1) else: return(n * factorial(n-1)) factorial(5) def插入(序号k): 位置=1 当pos>0且seq[pos]1: isort(序号k-1) 插入(序号k-1) 其他: 返回 def插件排

当我在编译器中运行它时,该代码不返回5的阶乘或任何其他值,但在解释器模式下运行时返回正确的值

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

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

factorial(5)
def插入(序号k):
位置=1
当pos>0且seq[pos]1:
isort(序号k-1)
插入(序号k-1)
其他:
返回
def插件排序(序号):
isort(seq,len(seq))
返回(seq)
插入排序([4,56,15,86,84,3,51,2,4,1,54,5,1,87,5,2,7,15,65])
很抱歉问了这么一件小事,我刚刚开始学习python,请尝试打印您的结果。 例如:
print(阶乘(5))
实际上,它正在返回它,只是没有任何东西在使用返回的值

在交互式解释器中,如果表达式不是
None
,REPL(a)将输出表达式的值

运行脚本时并非如此,您需要显式打印它:

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])


(a) 这是
Read Eval Print循环
,您应该特别注意
Print
位,这在本文中很重要:-)

什么是“编译器模式”?你指的是某种特定的IDE功能吗?@ReutSharabani所说的“编译器模式”,我指的是在空闲或空闲状态下作为脚本执行Spyder@Carcigenicate你能告诉我具体的语法吗?对不起,我不知道
print(factorial(5))