已实现递归打印前100项,求迭代函数的定义与实现方法
问题解答
迭代的定义
迭代指的是通过循环(比如for、while)重复执行代码块,依靠循环变量的变化逐步推进计算,全程不需要函数自我调用,是一种“循环推进”的计算方式。
迭代函数实现(附递归代码修正)
你提供的递归函数公式不符合示例里的数列(示例是1、3、6、10,属于三角数,公式为n*(n+1)//2),先修正递归逻辑,再实现迭代:
修正后的递归实现
如果要体现递归的“自调用”特性,可以写:
def recursive(n): if n == 1: return 1 return recursive(n-1) + n
如果想用显式公式实现递归(虽然显式公式没必要用递归,但按需求来):
def recursive_formula(n): return n * (n + 1) // 2
迭代函数实现
方式1:用显式公式直接计算
def print_sequence(): # 打印表头 print(f"{'n':>4} {'Iterative':>10} {'Recursive':>10}") # 循环遍历1到100 for n in range(1, 101): iter_result = n * (n + 1) // 2 rec_result = recursive_formula(n) # 按格式输出 print(f"{n:>4} {iter_result:>10} {rec_result:>10}") # 执行函数 print_sequence()
方式2:纯循环累加(更贴合迭代的“逐步计算”本质)
def print_sequence(): print(f"{'n':>4} {'Iterative':>10} {'Recursive':>10}") iter_total = 0 for n in range(1, 101): iter_total += n rec_result = recursive(n) print(f"{n:>4} {iter_total:>10} {rec_result:>10}") print_sequence()
迭代和递归的输出是否一致?
只要两者实现的是同一个数列逻辑,输出就完全一致。示例里的迭代和递归是对同一数列的两种计算方式:递归通过函数自调用逐步累加,迭代通过循环逐步累加(或用同个公式计算),最终结果必然相同。
内容的提问来源于stack exchange,提问作者helloworld04
相关产品推荐
相关产品推荐

