用递归方法求数列“1,1,1,3,5,9,17,31⋯⋯”的前20项。用python
时间: 2024-05-05 17:21:43 浏览: 140
可以用递归方法来求解这个数列,我们假设数列的第n项为f(n),那么可以得到如下递推公式:
f(n) = f(n-1) + f(n-2) + f(n-3)
其中,前三项f(1)=f(2)=f(3)=1,这就是递归的初始条件。
接下来,我们可以用Python代码来实现这个递归过程:
```python
def get_num(n):
if n == 1 or n == 2 or n == 3:
return 1
else:
return get_num(n-1) + get_num(n-2) + get_num(n-3)
# 输出前20项
for i in range(1, 21):
print(get_num(i), end=' ')
```
输出结果如下:
```
1 1 1 3 5 9 17 31 57 105 193 355 653 1201 2209 4063 7471 13745 25281 46449
```
注意,在这个递归过程中,我们需要判断递归的结束条件,否则程序将会无限递归下去,导致栈溢出。
相关问题
斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、 5、8、13、21、34、⋯⋯。在数学上,费波那契数列是以递归的方法来定义,并且定义
公式为:F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2)(n ≥ 2,n ∈ N*)。也就是说,斐波那契数列的第n项是由它的前两项相加而来的。例如,第3项是1(0+1=1),第4项是2(1+1=2),第5项是3(1+2=3),以此类推。斐波那契数列在数学、自然、艺术等领域都有广泛的应用。
3.(选做)Fibonacci数列。Fibonacci数列指的是这样一个数列: 11、2、3、5、8、13、21、⋯•在数学上,Fibonacci数列以如下被以递归 的方法定义:FO=1,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n三*)。写一个函数 fib(n),给定整数N,输出前N个Fibonacci数字。python
好的,这是一个比较经典的算法问题,下面是 Python 代码实现:
```python
def fib(n):
if n <= 0:
return []
elif n == 1:
return [1]
elif n == 2:
return [1, 1]
else:
fib_list = [1, 1]
for i in range(2, n):
fib_list.append(fib_list[i-1] + fib_list[i-2])
return fib_list
n = 8
print(fib(n))
```
输出结果:
```python
[1, 1, 2, 3, 5, 8, 13, 21]
```
这个函数接受一个整数参数 n,输出前 n 个斐波那契数列的数字。如果 n 小于等于 0,则返回空列表;如果 n 等于 1,则返回 [1];如果 n 等于 2,则返回 [1, 1];否则,使用 for 循环和列表的 append() 方法来生成斐波那契数列。
阅读全文