递归算法求sum=1+1/1+2+1/1+2+3+...+1/1+2+3+...+n
时间: 2023-09-12 10:03:38 浏览: 93
以下是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;
}
递归算法计算1+2+...+100的和
以下是两种C++递归算法计算1+2+...+n的和的例子:
1.使用while循环实现递归
```c++
#include <iostream>
using namespace std;
int sum(int n) {
while (n > 1)
return n + sum(n - 1);
}
int main() {
int n;
cout << "请输入n的值:";
cin >> n;
int a = sum(n);
cout << a;
return 0;
}
```
2.使用函数实现递归
```c++
#include <stdio.h>
#include <stdlib.h>
int fun(int m);
int main(){
int n,sum=0;
printf("Please enter a number:");
scanf("%d",&n);
if(n<=0){
printf("Enter error");
exit(0);
}
sum=fun(n);
printf("sum=%d\n",sum);
return 0;
}
int fun(int m){
if(m==1){
return 1;
}
return m+fun(m-1);
}
```