Python中的递归函数调用

Python中的递归函数调用,python,recursion,nested-loops,Python,Recursion,Nested Loops,我是Python的初学者,希望解决以下问题:给定一个由n个整数组成的列表和一个整数结果,将找到正确的运算符(+、-、*、/)来解相应的简单数学方程 示例: 对于数字=[2,3,4,1]和结果=13,应找到以下解决方案: 2+3*4-1=13 我编写了以下代码,通过使用3个嵌套for循环的蛮力方法找到了n=4的解决方案,在这些循环中,操作符是交替的。当我试图写一个n是任意的算法时,我很挣扎。这可以通过递归函数调用解决吗?如果可以,如何解决 numbers = [2, 3, 4, 1] result

我是Python的初学者,希望解决以下问题:给定一个由n个整数组成的列表和一个整数结果,将找到正确的运算符(+、-、*、/)来解相应的简单数学方程

示例:
对于数字=[2,3,4,1]和结果=13,应找到以下解决方案:
2+3*4-1=13

我编写了以下代码,通过使用3个嵌套for循环的蛮力方法找到了n=4的解决方案,在这些循环中,操作符是交替的。当我试图写一个n是任意的算法时,我很挣扎。这可以通过递归函数调用解决吗?如果可以,如何解决

numbers = [2, 3, 4, 1]
result = 13
op = ['+','-','*', '/']

Found=0
for i in op:
    for j in op:
        for k in op:
            #Build string for left side of the equation: e.g. '2 + 3 + 4 + 1'
            exp = str(numbers[0]) + i + str(numbers[1]) + j + str(numbers[2]) + k + str(numbers[3])
            if eval(exp) == result:
                Found += 1
                if Found == 1:
                    print('Found Solution(s):')
                print(f'{numbers[0]} {i} {numbers[1]} {j} {numbers[2]} {k} {numbers[3]} = {result}')

if Found == 0:
    print('No solution found!')

这不是一个递归的解决方案,也没有比你的更有效的解决方案,但它可以处理任意数量的操作

itertools.product
用于获取您想要的内容,如果我能想出一个高效的递归解决方案,我将编辑此内容

from itertools import product

def check_result(numbers,result):
    op = ['+','-','*', '/']
    for i in product(op,repeat=len(numbers)-1):
        t=[None]*(len(numbers)+len(i))
        t[::2],t[1::2]=numbers,i
        t=[str(i) for i in t]
        expr=''.join(t)
        if eval(expr)==result:
            return 'Found'
    return 'Not Found'

print(check_result([2, 3, 4, 1],13)) # Found
print(check_result([2, 3, 4, 1,2],14)) # Found
print(check_result([2, 3, 4, 1,2,3,3,1,2],242)) # Not Found

对递归主要是指编写代码来稍微减少一个问题,并让减少的问题通过递归调用来解决,直到它变得非常简单,不需要更深入的递归为止。尝试为此编写代码。如果你有具体问题,你可以在这里用你的代码提问。你打败了我:我正要点击发布按钮,然后你的答案出现了:)(这与我要提出的几乎相同)。谢谢你的快速回复,非常感谢!