Python递归中return语句后print无法执行的原因
为什么Python递归函数里执行return后,后续print语句无法运行?
这是因为return语句的核心作用就是立即终止当前函数的执行——只要函数执行到return这一行,就会立刻返回结果(或空值),函数内部return之后的所有代码都不会被执行,这个规则对递归函数和普通函数完全一致。
看你给出的代码:
arr=['zero','one','two','three','four','five','six','seven','eight','nine'] def numToWord(num): if num==0: return dig=num%10 num=num//10 #print(arr[dig],end=" ") return numToWord(num) print(arr[dig],end=" ") numToWord(345)
其中return numToWord(num)这一行,在调用递归函数的同时直接触发了return,函数执行到这里就会终止,后面的print(arr[dig],end=" ")根本没机会被执行。
如果想要实现按数字高位到低位输出对应单词的功能,你需要调整递归和print的顺序,把return去掉或者放到print之后,比如:
arr=['zero','one','two','three','four','five','six','seven','eight','nine'] def numToWord(num): if num==0: return dig=num%10 num=num//10 # 先递归处理高位数字,再打印当前位 numToWord(num) print(arr[dig],end=" ") numToWord(345) # 输出结果:three four five
这个写法里,函数会先递归处理更高位的数字,直到触发num==0的终止条件开始返回,之后才会依次执行栈中每个递归层级的print语句,从而得到正确的输出顺序。
内容的提问来源于stack exchange,提问作者VVarun
相关产品推荐
相关产品推荐

