树生长算法

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)

man*_*ano 1

您的变量n还将树的高度与生长周期混为一谈。您应该为不同的测量实例化不同的变量!此外,n在堆栈的所有级别都被修改,可能会导致错误的输出。

递归调用可以使算法更加优雅,但它们几乎总是不如非递归解决方案直观。我对初学者的建议是迭代地解决问题,然后将迭代算法转化为递归形式。