递归与Python问题

2024-04-25 12:56:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在试图理解递归。但我觉得我不太懂。在

下面是我的代码大纲:

def f():

    used = [anything]
    new = []

    while i < something:
        new.append(i)
        i += 1

    for i in new:
        if i in used:
            f()
        else:
            return new

现在,我不认为我可以使用这个,因为我没有迭代,也没有基本情况。我需要继续运行这个程序,直到我得到一组没有使用的值(随机选取)。实现这一目标的最佳方式是什么?创建另一个函数?在

任何帮助都将不胜感激。在

谢谢!在


Tags: 代码innewforreturnifdef情况
3条回答

您应该添加函数的参数,并将适当的参数传递给递归函数调用。在

例如:

def f(new, used, i):

我认为正则while循环比递归调用更能解决这个问题。我不完全理解您试图用这段代码实现什么,但这里用您的比喻重写了它:

def f(used):

    new = []

    while len(new) == 0 :
        while i < something:
            new.append(i)
            i += 1

        for i in new:
            if i in used:
                new = []
                break

    return new

首先,您需要添加参数,否则它不是真正的递归的。要点是这样的

f(x):
    x-=1
    if x < 5:
        return x
    else:
        f(x)

递归的要点是用一个新的参数调用函数本身。x每次都会改变值,所以最终if会降到5以下,您将返回x(它将是4)。所以它是f(7),减1,f(6),减1,f(5),减1,f(4),返回4。在

你也没有定义i或者其他东西,所以你会有一个无限循环,因为我总是少,事实上,我很惊讶代码能工作,因为这两个都没有定义。在

相关问题 更多 >