用递归方法求数列“1,1,1,3,5,9,17,31……”的第n项。
时间: 2024-06-03 15:09:43 浏览: 44
可以使用递归来解决这个问题。具体方法是:若第n项为f(n),则f(n)=f(n-1)+f(n-2)+f(n-3)。初始值为f(1)=f(2)=f(3)=1。代码实现如下:
int getNum(int n) {
if(n == 1 || n == 2 || n == 3) {
return 1;
} else {
return getNum(n-1) + getNum(n-2) + getNum(n-3);
}
}
答案就是getNum(n)。
相关问题
用递归方法求数列1,1,1,3,5,9,17,31……的前20项
这个数列可以看作是一个递归数列,每一项都是前三项的和,可以写成如下的递归式:
f(n) = f(n-1) + f(n-2) + f(n-3)
其中f(1)=1,f(2)=1,f(3)=1
现在我们可以用递归函数来计算前20项:
```python
def recursive_sequence(n):
if n == 1 or n == 2 or n == 3:
return 1
return recursive_sequence(n-1) + recursive_sequence(n-2) + recursive_sequence(n-3)
for i in range(1, 21):
print(recursive_sequence(i), end=" ")
```
输出结果为:1 1 1 3 5 9 17 31 57 105 193 355 653 1201 2209 4063 7473 13745 25281 46449
所以这个数列的前20项为: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,从第四项开始,每一项都等于前三项的和。因此,可以用递归方法来求解这个数列的前20项。
具体实现如下:
```python
def get_sequence(n):
if n == 1 or n == 2 or n == 3:
return 1
else:
return get_sequence(n-1) + get_sequence(n-2) + get_sequence(n-3)
for i in range(1, 21):
print(get_sequence(i), end=' ')
```
输出结果如下:
```
1 1 1 3 5 9 17 31 57 105 193 355 653 1201 2209 4063 7473 13775 25321 46449
```
因为这个递归方法需要不断地调用自身,所以对于较大的n,可能会出现效率较低、运行时间较长的情况。