序列的Python递归函数



如何找到序列中的第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的错误。当我调用它时,结果应该返回序列a1 * q^(n-1)的第n个数字,"函数(3,4,2)"在本例中为16。

该函数的第一项是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 = * q ^ (n - 1) = a *问^ (2 - 1)= a *问^ 1 =* q.

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

第四项是陶瓷q = * ^ (n - 1) = a *问^ (4 - 1)= a *问^ 3 =a * * * q.

所以递归需要做的是:每次乘以q。代码是:
return q * func(...)

整个功能:

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

我想这就是解决你问题的办法了。

def func(n,a1,q):
if n == 1:
return a1
else:
return q * func(n-1, a1, 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])

最新更新