Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 递归函数,每秒打印一个最小值为n到0的数字。我错过了什么?_Python_Function_Recursion - Fatal编程技术网

Python 递归函数,每秒打印一个最小值为n到0的数字。我错过了什么?

Python 递归函数,每秒打印一个最小值为n到0的数字。我错过了什么?,python,function,recursion,Python,Function,Recursion,如果n==1,则n-2==1,这将跳过基本情况。您可以完全删除if-else,只需在n小于0时终止函数即可。最后,您希望在函数中使用print语句,以便在每次迭代中调用它 def nr(n): if n == 0: return 0 else: if n >= 1: return nr(n-2) a = int(input('Enter a number: ')) print(nr(a)) 每秒钟打印一次数字 只有

如果n==1,则n-2==1,这将跳过基本情况。您可以完全删除if-else,只需在n小于0时终止函数即可。最后,您希望在函数中使用print语句,以便在每次迭代中调用它

def nr(n):
    if n == 0:
        return 0
    else:
        if n >= 1:
            return nr(n-2)

a = int(input('Enter a number: '))
print(nr(a))
每秒钟打印一次数字

只有一个
print
语句。您应该在递归函数中多次打印
print

def nr(n):
    if n >= 0:
        print(n)
        return nr(n-2)

a = int(input('Enter a number: '))
nr(a)

已查明的一些问题是:

  • 给定任意奇数,您的代码将返回
    None
    ,因为n变为不考虑的-1
  • 您没有返回所需的号码列表,而是只返回最后一个号码
下面的代码应该可以工作。我相信您需要进一步处理列表,而不仅仅是打印它们。以列表的形式返回所需的数字

def nr(n):
    if n == 0:
        return
    else:
        if n >= 1:
            print(n)
            nr(n - 2)

a = int(input("Enter a number: "))
nr(a)

您永远不会返回大于0的任何内容。您只能在
nr
中循环,直到达到0,然后重新运行0。或者你达到1,什么也不做。你似乎有足够的分数来发表评论。我不知道这意味着什么
def nr(n, list):
    if n == 0:
        list.append(n)
        return list
    elif n >= 1:
            list.append(n)
            return nr(n - 2,list)
    else:
        return list

a = int(input('Enter a number: '))
list = []
list = nr(a, list)
print(list)