就像我有这个问题,我根本不知道该怎么做。问题是这样的:
定义一个名为subt_tree()的递归函数,它接受二进制数字树,并递归地从左分支中减去每个右分支的值。例如,如果
tree1 = (25,((10,4),(12,11)))然后subt_tree(tree1)会回来
( 25 - (10-4) - (12-11) )=( 25 -(6-1))=( 25 -5)= 20。
因此,本质上,我必须使每个tuple成为一个减法问题,然后解决。
我试过这个:
def subt_tree(bnt):
"""Takes a bnt and recursively subtracts the value of each right branch from the left branch.
bnt -> number"""
if not isinstance(bnt,tuple):
return 1
else:
return subt_tree(bnt[0]) - subt_tree(bnt[1])但是,我的else语句肯定有问题,因为不管我输入了什么,它都只返回0或1。
发布于 2015-03-23 01:53:57
与其返回1,不如返回值本身?这毕竟是递归的大小写。
即
def subt_tree(bnt):
if not isinstance(bnt,tuple):
return bnt
else:
return subt_tree(bnt[0]) - subt_tree(bnt[1])如果您返回1,则只会得到一组值,其中包括从彼此之间减去1。
https://stackoverflow.com/questions/29201805
复制相似问题