递归算法求sum=1+1/1+2+1/1+2+3+...+1/1+2+3+...+n
时间: 2023-09-12 16:03:38 浏览: 137
以下是Python实现:
```
def sum_recursive(n):
if n == 1:
return 1
else:
return sum_recursive(n-1) + sum(range(1,n+1))
def sequence_recursive(n):
if n == 1:
return "1"
else:
return sequence_recursive(n-1) + " " + " ".join([str(x) for x in range(1,n+1)])
n = 3
s = sequence_recursive(n)
print(s)
lst = [int(x) for x in s.split()]
sum = sum_recursive(n)
print(sum)
```
其中,`sum_recursive`函数用于计算前n个数的和,`sequence_recursive`函数用于生成前n个数的序列。在`sum_recursive`函数中,利用递归计算前n-1个数的和,然后加上第n个数到1的和。在`sequence_recursive`函数中,利用递归生成前n-1个数的序列,然后加上第n个数到1的序列。最后,将生成的序列转化为列表,再计算前n个数的和。
相关问题
C语言递归算法求sum=1+1/1+2+1/1+2+3+...+1/1+2+3+...+n
#include<stdio.h>
double sum(int n){
if(n == 1){ //递归终止条件
return 1;
}
else{
double s = 0;
for(int i = 1; i <= n; i++){
s += 1.0 / i; //计算1/1+1/2+1/3+...+1/n
}
return sum(n-1) + s; //递归计算1/1+1/2+1/3+...+1/n的和
}
}
int main(){
int n;
printf("请输入n的值:");
scanf("%d", &n);
printf("sum = %lf", sum(n));
return 0;
}
给定一个正整数n(1<=n<=100),采用迭代算法和递归算法求s = 1+(1+2)+(1+2+3)+...+(1+2+....n)
当需要计算从1到n的所有连续整数之和s,可以使用迭代和递归两种方法。
**迭代算法(Iterative Solution):**
```python
def iterative_sum(n):
total = 0
for i in range(1, n + 1):
total += i
return total
# 示例
n = 5
iterative_result = iterative_sum(n)
```
在这个迭代过程中,我们通过循环逐个累加每个数字,最终得到总和。
**递归算法(Recursive Solution):**
```python
def recursive_sum(n):
if n == 1:
return 1
else:
return (n * (n + 1)) // 2 + recursive_sum(n - 1)
# 示例
n = 5
recursive_result = recursive_sum(n)
```
递归算法则是将问题分解成更小的部分。对于基本情况n=1,直接返回1;对于其他情况,我们将当前项加入到前n-1个数的和上,通过不断递归直到达到基本情况。
阅读全文