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])
如何找到序列中的第 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])