用递归函数进行功能实现时,需要找到递归关系和递归出口,递归关系需要建立起n与__步骤的数学关系式。
递归关系需要建立起n与n-1步骤的数学关系式
那么你的问题是什么?
随便举例,计算1+2+...+100
关系式:
sum(n) = 1 当n = 1时
sum(n) = sum(n - 1) + n 当n > 1时
编写程序
def sum(n):
if n == 1: return 1
return sum(n - 1) + n
递归出口就是n = 1
不知道你这个问题是否已经解决, 如果还没有解决的话:使用标准库collections中的deque,它是一个双端循环队列
from collections import deque
q = deque([],5) //[]初始化 队列长度
q.append(1) //入队
q.appendleft(2) //从左入队
q.pop(1) //出队
答案:
代码实现:
定义递归函数时需要考虑的参数是原始数字n,以及中间结果result,因为在每一次递归时需要将result与当前递归的数字相乘,所以需要将result作为参数传递;递归出口是当n等于1时,返回最终的结果result;递归关系式是f(n) = n * f(n-1),每次将n-1作为参数进行下一次递归。
代码如下:
def factorial(n, result):
if n == 1:
return result
result *= n
return factorial(n-1, result)
调用递归函数并传递参数:
n = 5
result = 1
print(factorial(n, result))
输出结果为120,即5的阶乘。