【问题标题】:Recursion using for-loop使用 for 循环进行递归
【发布时间】:2018-11-02 16:26:57
【问题描述】:

我目前正在编写一个程序,其中我必须使用 for 循环递归地计算一个数字。但不幸的是,我不知道如何正确实现这个函数,因为我当前的实现没有计算出正确的答案。

public class Calc {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        double k = sc.nextDouble();
        double e = sc.nextDouble();
        double q = sc.nextDouble();
        int n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            k = (k + (i * e)) * (1 + q);  //The problem I have is that I don't know how to access the previous element of the for-loop
        }   

    }
}

【问题讨论】:

  • 你说你应该递归,但我没有看到任何可以递归调用的方法。另外,你的尝试是什么?您的代码目前什么都不做,甚至没有编译。看起来更像是练习模板,而不是你的尝试。还要说明哪个部分有问题。阅读How to Ask,谢谢。
  • 请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作摘要,以及对您在解决它时遇到的困难(help centerHow to Ask)。
  • 你的递归函数在哪里?
  • 我的程序应该扫描指定的 4 个值。使用 for 循环它应该将在循环中计算的下一个值添加到现有的 k 值。基本上我试图实现的公式看起来像 k = ( k + i * e) * (1 + q)。用斜体写的k是前面的k
  • 你到底想做什么。例如,预期的输出是什么?为什么要将 for 循环转换为递归函数?

标签: java for-loop recursion


【解决方案1】:

而不是你的 for 循环:

for (int i = 0; i < n; i++) {
    k = (k + (i * e)) * (1 + q);
}

您确实可以使用递归。

只需创建一个名为 calculateK() 的方法并递归调用它,如下所示:

public static double calculateK(double k, int i) {
    if (i == n) {
        return k;
    }
    else 
    {
        return calculateK((k + (i * e)) * (1 + q), i + 1);
    }
}

【讨论】:

    猜你喜欢
    • 2015-12-30
    • 2018-09-03
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 2015-12-27
    相关资源
    最近更新 更多