Python中的递归代码
我得到了一个python代码,如果给定的数字列表有一个添加到tar的子集值,那么它将返回True或False,但我希望在不使用for循环的情况下生成它。 有没有关于如何不使用循环而只使用递归的想法Python中的递归代码,python,recursion,Python,Recursion,我得到了一个python代码,如果给定的数字列表有一个添加到tar的子集值,那么它将返回True或False,但我希望在不使用for循环的情况下生成它。 有没有关于如何不使用循环而只使用递归的想法 def sub_sum(num, tar): if tar == 0: return True b=len(num) for a in range(b): if sub_sum(num[a+1:] + num[:a], tar - num[
def sub_sum(num, tar):
if tar == 0:
return True
b=len(num)
for a in range(b):
if sub_sum(num[a+1:] + num[:a], tar - num[a]):
return True
return False
例如:
>>>sub_sum([6,7,8], 13)
True
>>>sub_sum([6,7,8], 50)
False
迭代总是可以被递归所代替,但是通常没有很好的理由这样做,工程师通常尝试朝相反的方向去做(首先写出一个递归的解决方案,然后将它转换成一个可迭代的解决方案) 出于纯粹的学术目的,这里有一个简单的递归替换迭代的例子:
for a in [4,3,2,1,0]:
print(a)
print()
def fun(start = 4):
if start >= 0:
print(start)
fun(start-1)
fun()
输出:
四,
3.
2.
1.
0
四,
3.
2.
1.
0
。。。当然,你可以用这个愚蠢的代码来替换你的循环。你可以用
any([list comprehension])
方法来替换,但这只是将循环移动到list comprehension中