相关疑难解决方法(0)

"印刷"和"回归"之间的正式区别是什么?

让我们说我定义一个简单的函数,它将显示传递给它的整数:

def funct1(param1):
    print(param1)
    return(param1)
Run Code Online (Sandbox Code Playgroud)

输出将是相同的,但我知道当return在函数中使用语句时,可以再次使用输出.否则,print不能使用语句的值.但我知道这不是正式的定义,任何人都能为我提供一个好的定义吗?

python

16
推荐指数
4
解决办法
7万
查看次数

可以将回溯尾递归算法转换为迭代吗?

让我们来看看Knight Tour问题吧.可以转换为迭代吗?困扰我的是回溯部分.如何在循环中回溯?当我从递归到迭代时,是否必须使用堆栈数据结构来实现回溯?


我在这里以更好的方式问了这个问题:有人能通过代码描述一个回溯迭代而不是递归的实际例子吗?

algorithm recursion tail-recursion data-structures

10
推荐指数
2
解决办法
4511
查看次数

如何返回n对圆括号的所有有效组合?

def paren(n):
    lst = ['(' for x in range(n)]
    current_string = ''.join(lst)
    solutions = list()
    for i in range(len(current_string)+1):
        close(current_string, n, i, solutions)
    return solutions

def close(current_string, num_close_parens, index, solutions):
    """close parentheses recursively"""
    if num_close_parens == 0:
        if current_string not in solutions:
            solutions.append(current_string)
        return
    new_str = current_string[:index] + ')' + current_string[index:]
    if num_close_parens and is_valid(new_str[:index+1]):
        return close(new_str, num_close_parens-1, index+1, solutions)
    else:
        return close(current_string, num_close_parens, index+1, solutions)

def is_valid(part):
    """True if number of open parens >= number of close parens in …
Run Code Online (Sandbox Code Playgroud)

python recursion backtracking

7
推荐指数
2
解决办法
4110
查看次数

不使用生成器的python递归列表组合

我正在学习python3.为了更多地考虑递归,我想实现一个函数comb(n,k),它返回一个由一组{1,2,...,n}中的kk元素的所有组合组成的列表.

我认为使用循环是不明智的,因为嵌套循环的数量取决于k.所以我认为它与递归.我尝试编写受这个问题启发的功能, 但我无法得到正确的答案.

def combinations(sub, data_set, index, still_needed):
    if still_needed == 0:
        return sub

    for i in range(index, len(data_set)):
        sub.append(data_set[i])
        still_needed = still_needed - 1
        return combinations(sub, data_set, index+1, still_needed)

def comb(n, k):
    data_set = list(range(1, n+1))
    print (combinations([], data_set, 0, k))
Run Code Online (Sandbox Code Playgroud)

如果我测试Comb(6,3),我只得到[1,2,3].我想获得所有组合.我的代码中有什么问题?还是重要的错过了?我只是想学习python的递归,这不是一个功课,谢谢.


期待的结果如下:

[[1, 5, 6],
[2, 5, 6],
[3, 5, 6],
[4, 5, 6],
[1, 4, 6],
[2, 4, 6],
[3, 4, 6],
[1, 3, 6],
[2, 3, 6],
[1, 2, 6],
[1, 4, …
Run Code Online (Sandbox Code Playgroud)

python algorithm recursion

2
推荐指数
1
解决办法
564
查看次数