Python求和函数错误排查及递归实现方法咨询
问题修复与递归实现方案
原代码问题分析
原代码中find_sum函数的return sum语句写在了while循环内部,导致循环仅执行一次就直接返回当前输入的n值,无法完成0到n的完整累加。
修复后的迭代版本
将return sum移到while循环外部,让循环完整执行所有累加步骤;同时避免使用Python内置函数名sum作为变量名,防止覆盖内置功能:
#This program defines a function named find_sum to calculate the sum of numbers #from 0 to n, where n is number entered by a user #input = 3 so 0 + 1 + 2 + 3 = 6(result) #input = 10 result = 55 n = int(input("Enter a number: ")) def main(): result = find_sum(n) print("The result is", result) def find_sum(n): sum_total = 0 while n >= 0: sum_total += n n -= 1 return sum_total # 移至循环外部,确保累加完成后返回结果 main()
递归实现版本
递归实现的核心逻辑分为两步:
- 基线条件:当
n ≤ 0时,返回0(0到0的和为0) - 递归条件:返回
n + find_sum(n-1),即当前数n加上0到n-1的和
代码实现:
n = int(input("Enter a number: ")) def main(): result = find_sum(n) print("The result is", result) def find_sum(n): if n <= 0: return 0 return n + find_sum(n - 1) main()
测试输入3时,递归执行流程为:find_sum(3) = 3 + find_sum(2) → find_sum(2)=2+find_sum(1) → find_sum(1)=1+find_sum(0) → find_sum(0)=0,最终计算得3+2+1+0=6,符合预期。
内容的提问来源于stack exchange,提问作者toothpaste_123
相关产品推荐
相关产品推荐

