树生长算法

时间:2015-05-25 14:58:28

标签: python algorithm if-statement

我正在尝试编写一种树木生长算法,其中树木每年经历2个周期的增长。第一个生长周期发生在春季,高度翻倍。第二个生长周期发生在夏季,当它的高度增加1米时。

我遇到的问题是,现在,春天开始种植一棵新树。它的高度是1米。我想在N个生长周期后找到树的高度?

我正在对函数调用它的递归函数进行一些研究。我在这里使你编写的代码更加优雅和简单,然后循环。我在执行此功能时遇到问题

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listView"
    android:layout_gravity="center_horizontal|top" />

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我不认为递归函数是此程序的最佳选择。另外,对于第一行,您应该使用int(input()),而不仅仅是input()。虽然,如果您确实希望使用递归函数,这是我的程序代码:

n = int(input("How many years does the tree grow? "))
def cycle(s, height):
    height *= 2
    height += 1
    s -= 1
    if s != 0:
        cycle(s, height)
    else:
        print("Your tree was", height, "meters.")
cycle(n, 1)