我正在尝试编写一种树木生长算法,其中树木每年经历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" />
答案 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)