Python 序列的递归函数

Python recursive function for a sequence

如何找到序列中的第 n 个数:nth = a*q^(n-1).

到目前为止我已经这样做了:

    def func(n,a1,q):
        if n == 1:
            return 1
        else:
            return func(a1 * q^(n-1))

我收到 2 个缺少必需位置参数 a1 和 q 的错误。当我调用它时,结果应该是 return 序列 a1 * q^(n-1) 的第 n 个数字,在这种情况下,“func(3,4,2)”将是 16。

我认为这是对你问题的解答。

def func(n,a1,q):
    if n == 1:
        return a1
    else:
        return q * func(n-1, a1, q)

这个函数的第一项是n1 = a*q^(n-1) = a*q^(1-1) = a*q^0 = a*1 = a。这是递归的中断条件。代码是

    if n == 1:
        return a     # You returned 1 here

第二项是n2 = a*q^(n-1) = a*q^(2-1) = a*q^1 = a*q .

第三项为n3 = a*q^(n-1) = a*q^(3-1) = a*q^2 = a*q*q.

第四项为n4 = a*q^(n-1) = a*q^(4-1) = a*q^3 = a*q*q*q.

那么递归要做的就是:每次乘以q。代码是:

return q * func(...)

整个函数:

def func(n, a, q):
    if n == 1:
        return a
    return q * func(n-1, a, q)

我不确定您为什么要寻找递归解决方案,除非它是某种家庭作业(在这种情况下,使用其他答案)。

有一种直接的方式来表达你的“序列中的第 n 个数字”:

def func(n, a, q):
    return a * q**(n-1)

并且,如果您要查找整个序列(直到给定值 n),则:

import numpy as np

def funcall(n, a, q):
    return a * q**np.arange(n)

示例:

>>> funcall(10, 4, 2)
array([   4,    8,   16,   32,   64,  128,  256,  512, 1024, 2048])