所以就像我有这个问题一样,我根本不知道怎么做。问题是这样的:
定义一个名为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。
答案 0 :(得分:2)
而不是返回1为什么不返回值本身?这是你的递归的所有基本情况。
即
def subt_tree(bnt):
if not isinstance(bnt,tuple):
return bnt
else:
return subt_tree(bnt[0]) - subt_tree(bnt[1])
如果你返回1,你只会得到一组由1组相互减去的值。