T1 递归求和
题目描述
用递归的方法求1+2+3+4+…+(n-1)+n的值。
输入格式
一个整数n。(1<=n<=10000).
输出格式
一个整数,数列的和。
输入输出样例
输入
10
55
分析
很简单的等差数列。递归函数式为:
if (n为1)返回1
否则返回 n + f(n)
代码如下
#include <bits/stdc++.h>
using namespace std;
int n;
int f(int n){
//根据递归式写函数
if (n == 1)
return 1;
return n + f(n - 1);
}
int main(){
cin >> n;
cout << f(n) << endl;
return 0;
}
T2 Hermite多项式
用递归的方法求Hermite多项式的值
对给定的实数x和正整数n,求多项式值。
输入格式
两个数x,n。用空格隔开。(-1<x<1,1<=n<=20)
输出格式
一个数,函数值。(保留两位小数 )
输入输出样例
输入 #1
-0.10 1
输出 #1
-0.20
分析
题目已经列出递归关系式,直接照着写即可
注:要审清题意,题目要求保留两位小数
代码如下
#include<bits/stdc++.h>
using namespace std;
double n, x;
double f(double x, double n){
if (n == 0) return 1;
if (n == 1) return 2 * x;
return 2 * x * f(x, n - 1) - 2 * (n - 1) * f(x, n - 2);
}
int main(){
cin >> x >> n;
double ans = f(x, n);
cout << fixed << setprecision(2) << ans << endl;
return 0;
}
T3 递归函数求值1
已知
用递归方法求解。
输入格式
一行有两个整数x和n,用空格隔开。(1<x<30000,1<=n<=10000)
输出格式
一个实数,即函数值。(保留两位小数)
输入输出样例
输入 #1
24499 8564
输出 #1
2.86
分析
这题比上题稍微复杂一点,没有直接列出递归关系式。
我们先找出原式中重复的地方:都是 x n + … {x} \over {n+…} n+…x
所以递归的截至应该是当n=1时,由此写出代码。
注:1·题目要求保留两位小数。
2·如果从n开始的话,到1只会从 x ( n − 1