- 任务描述
本关任务:编写函数 funP,完成数学函数P(n,x)函数的计算,定义如下:
-
相关知识
递归是一个很常见的数学概念,很多数学函数本身就是递归的,例如著名的斐波拉契数列:
a a a
同样可以用递归函数计算斐波拉契数列第 n 项:
// 递归函数fib:计算斐波拉契数列第 n 项并返回
int fib(int n)
{
// 递归终止,直接返回
if(n == 1 || n == 2)
return 1;
// 两次递归调用,求和并返回
return fib(n - 1) + fib(n - 2);
}
编程要求
在右侧编辑器中的Begin-End
之间补充代码,要求使用递归求数学函数 P 函数的功能。
测试说明
平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:
测试输入:12 2.34
预期输出:P(12, 2.34)=5.1583
测试输入:9 9.8
预期输出:P(9, 9.8)=25.8949
开始你的任务吧,祝你成功!
#include <iostream>
using namespace std;
// 函数funP:实现数学函数P函数
// 返回值:返回P(n,x)的值
double funP(int n, double x)
{
// 请在这里补充代码,实现递归函数funP
/********** Begin *********/
if (n == 0)
return 1;
else if (n == 1)
return x;
else if(n>1)
return (((2*n)-1) * funP(n-1, x)-(n-1) * funP(n-2, x)) / n;
/********** End **********/
}
int main()
{
int n;
double x;
cin >> n >> x; // 输入n、x
cout << "P(" << n << ", " << x << ")=" << funP(n, x) << endl;
return 0;
}