如何用尾递归求解n/2n+1数列的和

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));
}

应该是这样吧

img

如有帮助,望采纳!谢谢!

你这个规律不是很清晰,如果是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;
}