递归 - Java [英] Recursion - Java

查看:117
本文介绍了递归 - Java的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个程序,我必须使用递归来计算1/3 + 2/5 + 3/7 + 4/9 + ... + i /(2i + 1)的总和。但是,我不知道如何让我的程序显示必须添加的术语,以达到用户输入的数字。例如。如果我输入12,我想知道系列的多少项[1/3 + 2/5 + 3/7 + 4/9 + ... + i /(2i + 1)]被添加到大约12号。

I am working on a program where I have to use recursion to calculate the sum of 1/3 + 2/5 + 3/7 + 4/9 + ... + i / (2i + 1). However, I am not sure how to make my program show the term that must be added in order to reach the number enter by the user. For example. If I enter 12, I want to know how many terms of the series [1/3 + 2/5 + 3/7 + 4/9 + ... + i / (2i + 1)] were added to get approximately to the number 12.

我不想得到的是输入12的总和,在这种情况下是5.034490247342584而不是我想得到的术语如果我是总结到那个期限的所有数字我会得到接近12的东西。

What I don't want to get is the sum of inputting 12 which in this case is 5.034490247342584 rather I want to get the term that if I were to sum all numbers up to that term I would get something close to 12.

任何帮助将不胜感激!

这是我的代码

import java.util.Scanner;
public class Recursion {
public static void main(String[] args) {

    double number;
    Scanner input = new Scanner(System.in);

    System.out.println("Enter a value=  ");
    number = input.nextInt();

    System.out.println(sum(number) + " is the  term that should be added in order to reach " + number);

}

public static double sum(double k) {
    if (k == 1) 
        return 1/3;
    else 
        return ((k/(2*k+1))+ sum(k-1));
     }  
}


推荐答案

我不要认为这个问题应该使用递归解决,但是......如果你需要以这种方式实现它,这是一个可能的解决方案:

I don't think that this problem should be solved using recursion, but... if you need to implement it on that way, this is a possible solution:

import java.util.Scanner;

public class Recursion {
    public static void main(String[] args) {

        double number;
        Scanner input = new Scanner(System.in);

        System.out.println("Enter a value=  ");
        number = input.nextInt();

        double result = 0;
        double expectedValue = number;

        int k = 0;
        while (result < expectedValue) {
            k++;
            result = sum(k);
        }

        System.out.println(k
                + " is the  term that should be added in order to reach "
                + number + " (" + sum(k) + ")");

    }

    public static double sum(double k) {
        if (k == 1)
            return 1 / 3;
        else
            return ((k / (2 * k + 1)) + sum(k - 1));
    }
}

这篇关于递归 - Java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆