繁体   English   中英

While循环内的递归函数(Python)

[英]Recursive Function inside While loop (Python)

因此,我正在学习Python中的递归,并且我有一些代码可以找到用户输入的数字的阶乘。

def recursion(x):
    if x == 1:
        return 1
    else:
        return(x * recursion(x - 1))

num = int(input("Enter a non-negative integer: "))
if num >= 1:
    print("The factorial of", num, "is", recursion(num))

此代码可以正常工作。 也就是说,它将询问指定的问题,允许用户输入,并找到数字的阶乘。 所以我想做的是将递归函数放在While循环中,以便程序在打印提交的数字的阶乘后,询问用户是否要输入另一个数字。

loop = 1
while loop == 1:

def recursion(x):
    if x == 1:
        return 1
    else:
        return(x * recursion(x - 1))

num = int(input("Enter a non-negative integer: "))
if num >= 1:
    print("The factorial of", num, "is", recursion(num))
    print()
    answer = input(print("Would you like to find the factorial of another non-negative integer? Y/N: "))
    if answer == "Y":
        loop = 1
    else:
        loop = 0

我在这段代码中遇到的问题是,它将要求用户输入一个输入数字,找到阶乘,然后问“是否要查找另一个非负整数的阶乘?是/否:”问题,但是当我在IDLE中运行此代码时,上述问题后的行显示“无”。

Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) 
[MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
Enter a non-negative integer: 6
The factorial of 6 is 720
Would you like to find the factorial of another non-negative integer? Y/N: 
NoneY
Enter a non-negative integer: 4
The factorial of 4 is 24
Would you like to find the factorial of another non-negative integer? Y/N: 
NoneN
>>> 

我浏览了Python文档(第4.6节) ,其中提到解释器通常禁止显示“ None”。

  1. 为什么当我在IDLE中运行此代码时,在循环控制问题之后它是否显示“ None”?
  2. 有没有办法忽略“无”而仍然使用print()?

之所以看到“ None是因为您的inputprint内容:

input(print("Would you like to find the factorial of another non-negative integer? Y/N: "))

删除该print

input("Would you like to find the factorial of another non-negative integer? Y/N: ")

这行:

answer = input(print("Would you like to find the factorial of another non-negative integer? Y/N: "))

print返回None ,所以您要在阶乘函数中输入None ,然后给出None作为答案。

应该:

answer = input("Would you like to find the factorial of another non-negative integer? Y/N: ")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM