【发布时间】:2016-03-15 01:52:17
【问题描述】:
我学习递归,有一个例子可以解决写 * 字符一定次数的问题。
例如:如果你要传入数字 3,它应该打印 2^3 颗星,所以它会打印出 8 颗星。
我应该打印 2 ^ k 次,其中 k 是传递的整数。问题的答案是:
public String printStars(int k) {
if (k == 0)
return "*";
else
return printStars(k - 1) + printStars(k - 1);
}
我似乎无法理解调用堆栈以及它如何解决问题,我查看它的方式,当我为 int k 传入 3 时,它会执行 n - 1 3 次,直到它达到基本情况,并且会在此之前的调用中返回 2 颗星,并且由于需要 3 个级别才能达到该深度,因此它将打印 3 x 2 颗星,因此它将打印 6 颗星。这很奇怪,因为大多数其他递归对我来说很容易,但这很令人困惑。
【问题讨论】:
-
我假设您的意思是
k而不是n(反之亦然)。