"""练习 5:分别用递归和循环计算 n!。 输入一个非负整数 n(建议 n <= 900)。 学习说明: - 阶乘定义为 n! = n * (n-1) * ... * 1,且 0! = 1。 - factorial_recursive() 每次把问题变成更小的 n-1;先得到较小阶乘,再乘以 n。 - n 到 1 或 0 时返回 1,称为递归终止条件。 - factorial_iterative() 从 1 开始,用 for 循环依次乘上 2 到 n。 - 主程序先读取 n;负数不符合题目条件,否则分别调用两个函数对照结果。 - 递归有调用层数限制,所以题目建议 n 不要过大。 """ def factorial_recursive(n): if n <= 1: return 1 smaller_factorial = factorial_recursive(n - 1) result = n * smaller_factorial return result def factorial_iterative(n): result = 1 for value in range(2, n + 1): result = result * value return result n = int(input()) if n < 0: print("n must be non-negative") else: print("recursive:", factorial_recursive(n)) print("iterative:", factorial_iterative(n))