1/3+2/5+4/9+……+n/2n+1的和
注意题目要求是尾递归
#include <iostream>
double sum(int n, double s = 0.0)
{
if (n == 0)
return s;
else
return sum(n - 1, s + static_cast<double>(n) / (2 * static_cast<double>(n) + 1));
}
int main()
{
int n;
std::cin >> n;
if (n < 0) {
std::cerr << "requires n >= 0" << std::endl;
return -1;
}
std::cout << sum(n) << std::endl;
return 0;
}
你题目的解答代码如下:
#include<stdio.h>
double pf(int n)
{
printf("%d / %d\n", n,2*n+1);
if (n==1)
return (double)(1) / (double)(3);
return (double)(n) / (double)(2*n+1) + pf(n/2);
}
void main()
{
int n;
scanf("%d", &n);
printf("%lf", pf(n));
}
应该是这样吧
如有帮助,望采纳!谢谢!
你这个规律不是很清晰,如果是n/(2n+1),那么应该表示1-n,中间应该有3/7阿
//1/3+2/5+4/9+……+n/2n+1
#include<iostream>
using namespace std;
double dg(int n)
{
if (n==1)
return 1.0/3;
return n/(2*n+1.0) + dg(n-1);
}
int main()
{
int n;
cin>>n;
cout<<dg(n)<<endl;
return 0;
}