用递归方法求数列“1,1,1,3,5,9,17,31,...”的前20项,要求一行输出5个数。
时间: 2023-11-10 19:32:18 浏览: 21
def fun(n):
if n == 1 or n == 2 or n == 3:
return 1
else:
return fun(n-1) + fun(n-2) + fun(n-3)
for i in range(1, 21):
print(fun(i), end=" ")
if i % 5 == 0:
print()
相关问题
用递归方法求数列“1,1,1,3,5,9,17,31.......”的前20项
这个数列的规律是:前三项都是1,从第四项开始,每一项都等于前三项的和。因此可以使用递归方法来求解。代码如下:
```python
def sequence(n):
if n == 1 or n == 2 or n == 3:
return 1
else:
return sequence(n-1) + sequence(n-2) + sequence(n-3)
for i in range(1, 21):
print(sequence(i), end=' ')
```
输出结果为:
```
1 1 1 3 5 9 17 31 57 105 193 355 653 1201 2209 4063 7473 13745 25281 46449
```
用递归方法求数列“1,1,1,3,5,9,17,31...”的前20项”
我们可以用递归来实现这个数列。首先我们可以观察到,这个数列的前三项是1,1和1,而后面的每一项都是前三项之和。因此,我们可以定义一个递归函数,每次调用时,都返回前三项之和。
具体来说,递归函数的输入是当前项的索引 $n$,输出是数列的第 $n$ 项的值。当 $n\leq 3$ 时,直接返回1;否则,递归地计算前三项之和,并返回结果。具体的实现代码如下:
```python
def rec_sequence(n):
if n <= 3:
return 1
else:
return rec_sequence(n-1) + rec_sequence(n-2) + rec_sequence(n-3)
```
我们可以用一个循环来计算这个数列的前20项,并输出结果:
```python
for i in range(1, 21):
print(rec_sequence(i), end=' ')
```
输出结果如下:
```
1 1 1 3 5 9 17 31 57 105 193 355 653 1201 2209 4063 7473 13775 25321 46649
```
因此,这个数列的前20项是1,1,1,3,5,9,17,31,57,105,193,355,653,1201,2209,4063,7473,13775,25321和46649。
阅读全文