【问题标题】:project Euler #2 in javajava中的Euler项目#2
【发布时间】:2023-03-21 21:23:01
【问题描述】:

任何人都可以看看我的 java 代码,并告诉我如何修复我的代码。问题如下。我真的很感激任何帮助:)

public class problem
{
    public static void main (String args []){
        int a = 0;
        int b = 1;
        problem();
    }

    public static int problem(){

        int c = a + b;
        if (c>10){
            System.out.println(c);
            return c;
        }
        int a = b;
        int b = c;
        problem();
    }
}

斐波那契数列中的每个新项都是通过添加前两项来生成的。从 1 和 2 开始,前 10 个术语将是:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

通过考虑斐波那契数列中值不超过四百万的项,求偶数项之和。

【问题讨论】:

  • 你没有在你的主方法之外声明你的变量
  • 鉴于您在Java方面的经验不是很丰富,我想指出Java不是解决Project Euler问题的最佳工具,解决Project Euler问题也不是最好的学习方式爪哇。如果您的目标是解决编程问题,请使用 Python 或 Ruby。如果您的目标是学习 Java,那么更实际的项目可能是更好的方法。
  • 你的类也和你的方法同名(大小写和名称),而void main()通常不在一个类中?
  • @EricWilson 你能解释一下为什么 Java 不擅长解决体育问题吗?问题?我同时使用 C# 和 java..但是我使用 NUnit/JUnit 来帮助我逐步解决问题。当然,解决问题可能需要更长的时间,但我不认为它是一个坏工具。你能解释一下吗?
  • @RobertSnyder 这是一种方法,使用单元测试比使用 main 方法好一点,但更好的是使用带有 REPL 的语言以获得更快的反馈。作为一名专业的 Java 程序员,我只是更喜欢使用更轻量级的工具来解决更小的问题。

标签: java fibonacci


【解决方案1】:

一些问题。 ab 应该是静态成员变量,如果您希望所有方法都可以访问它。 problem() 正在返回一个 int,但只是有时。这实际上不需要返回任何东西,所以我将其设为无效。

这个版本将打印出第一个大于 10 的斐波那契数,然后停止,但是您想要第一个大于 400 万的斐波那契数,并且您想要数字的总和。所以我们需要跟踪它。

你的起始值也是 0 1 斐波那契数列应该从 1 和 2 开始。

最后我们只想对偶数求和,我们可以通过检查提醒除以 2 时是否为 0 来做到这一点。

public class problem
{
    private static int a = 0;
    private static int b = 0;
    private static int sum = 0;

    public static void main (String args []){
        a = 1;    
        b = 2;
        problem();
        System.out.println("Sum = " + sum);
    }

    public static void problem(){
        if (b % 2 == 0)
        {
            sum = sum + b;
        }

        int c = a + b;
        if (c>=4000000)
        {
            return;
        }

        a = b;
        b = c;
        problem();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多