我试图写一个递归函数,从打印0
到n
,但我不知道该怎么做。我不小心做了一个从n
到的打印0
:
def countdown(n):
print(n)
if n == 0:
return 0
return countdown(n - 1)
我不知道这是否有帮助,也许我可以更改代码中的内容以使其从0
变为n
?
你差点知道了!这是一个固定的简化版本:
def countup(n):
if n >= 0:
countup(n - 1)
print(n)
注意:
print
声明必须放在 后 递归调用n < 0
仅打印,则递归退出,因为我们只在打印,此后无需执行任何操作即可返回None
(Python的默认返回值)更新
看来编写尾部递归解决方案非常流行:)哦,好吧,这是我的照片,它是@AndyHayden想法的简化且尾部递归的版本-
使用尾部调用优化装饰器配方:
@tail_call_optimized
def countup(N, n=0):
print(n)
if n < N:
countup(N, n + 1)
无论哪种方式,它都能按预期工作:
countup(5)
=> 0
1
2
3
4
5
12.3. Display,一个递归的值打印器 接下来,让我们看看如何改善聚合数据类型的显示。我们并不想完全克隆一个fmt.Sprint函数,我们只是构建一个用于调试用的Display函数:给定任意一个复杂类型 x,打印这个值对应的完整结构,同时标记每个元素的发现路径。让我们从一个例子开始。 e, _ := eval.Parse("sqrt(A / pi)") Display("e", e) 在
我试图使用递归打印链表中每个节点中的数据,但是我得到了越界错误,所以我认为递归函数有问题。 这是头文件: 基本上,我从公共函数调用私有助手函数。下面是两个函数的代码: 我认为问题出在if块中,因为如果没有下一个节点,我需要停止,但在返回之前还需要打印当前节点中的数据,但因为我已经调用了
家庭作业:寻找更好的策略或方法,而不是完整的代码。 当我试图确定这个问题的递归情况时,我完全被弄糊涂了。我必须编写一个接受整数参数“n”的方法,然后输出总共“n”个字符。根据原始整数是奇数还是偶数,中间字符应始终为“”或“*”。下面是两个不同的方法调用和输出应该是什么样子: 我该如何识别递归案例呢?
题目描述 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数即 999。 解题思路 由于 n 可能会非常大,因此不能直接用 int 表示数字,而是用 char 数组进行存储。 使用回溯法得到所有的数。 // java public void print1ToMaxOfNDigits(int n) { if (n <= 0)
考虑Python中的这个基本递归: 根据斐波那契数列的(n-1)(n-2)函数,这是有道理的。 Python如何执行包含另一个递归的递归,这个递归不在同一代码行内,而是在同一代码行内?“finobacci(number-1)”是否完成所有递归,直到它到达“1”,然后它对“fibonacci(number-2)”做同样的事情,并将它们相加? 作为比较,下面的递归函数将一个数“x”提升为“y”的幂,我
零是偶数。 一个很奇怪。 对于任何其他数N,其均匀度与N-2相同。 定义一个递归函数甚至对应于此描述。该函数应接受单个参数(正整数)并返回布尔值。 这是我对isEven的实现: 当我调用这个函数时,它返回<code>undefined</code> 的输出如下: 我不知道为什么是第一个输出,但在那之后正在点击,那么为什么是 不执行?