ab *_*tra 5 python algorithm if-statement
我正在尝试编写一个树生长算法,其中树每年经历 2 个生长周期。第一个生长周期发生在春季,此时高度翻倍。第二个生长周期发生在夏季,此时其高度增加 1 米。
我的问题是现在,在春天开始时种植了一棵新树。它的高度是1米。我想找到N个生长周期后树的高度?
我正在对递归函数进行一些研究,其中函数自行调用。我在这里它使您编写的代码比 while 循环更优雅和简单。我在执行此功能时遇到问题
n = input('How long would you like the tree to for?: ')
def cycle(n):
if n == 0:
n = + 1
return n
print '/n' # The reason for all the '/n' is just for neatness.
print('The tree will be ' + n + 'Ft tall')
elif n % 2 == 0:
n = 1 + cycle(n - 1)
return n
print '/n'
print('The tree will be ' + n + 'Ft tall')
elif n % 2 != 0:
n = 2 * cycle(n - 1)
return n
print '/n'
print('The tree will be ' + n + ' Ft tall')
cycle(n)
Run Code Online (Sandbox Code Playgroud)
您的变量n还将树的高度与生长周期混为一谈。您应该为不同的测量实例化不同的变量!此外,n在堆栈的所有级别都被修改,可能会导致错误的输出。
递归调用可以使算法更加优雅,但它们几乎总是不如非递归解决方案直观。我对初学者的建议是迭代地解决问题,然后将迭代算法转化为递归形式。