-1

我做了这个程序,它是一个分段方程程序,我只想知道我是否做错了什么或者我错过了什么。答案是正确的,但只是想确保我没有错过任何编码。

class RecursiveMethods
{
    RecursiveMethods()          //default constructor
    {
    }

    public int fOf(int x)
    {
        if (x <= 10)                        //the base case
        {
            System.out.println(x + " <= 10, therefore ... f(" + x + ") = -5");
            return -5;
        }
        else
        {
            System.out.println(x + " > 10, therefore ... f(" + x + ") = f(" + x + " - 3) + 2 = f(" + (x -3) + ") + 2");
            return fOf(x-3) + 2;
        }
    }    
}

public class RecursionMethodTester
{
    public static void main(String[] args)
    {
        int x;
        RecursiveMethods rMethods = new RecursiveMethods();

        System.out.println("---------------------------------");
        System.out.println("       f(x - 3) + 2    if x >  10");
        System.out.println("f(x) = ");
        System.out.println("       -5              if x <= 10");
        System.out.println("---------------------------------");
        System.out.println();

        x = 20;
        System.out.println("Example 1:  x = " + x);
        System.out.println("f(" + x + ") = " + rMethods.fOf(x));
        System.out.println();

        x = 19;
        System.out.println("Example 2:  x = " + x);
        System.out.println("f(" + x + ") = " + rMethods.fOf(x));
        System.out.println();

        x = 18;
        System.out.println("Example 3:  x = " + x);
        System.out.println("f(" + x + ") = " + rMethods.fOf(x));
        System.out.println();  
    }
}

谢谢您的支持。

4

1 回答 1

1

看起来不错...为了获得额外的荣誉,这里有一些其他的建议:

  • RecursiveMethods 不需要实例化。fOf 方法可以标记为静态,而不是实例化和调用实例,您可以只调用“RecursiveMethods.fOf()”。
  • 看看 PrintWriter 而不是使用 System.out.println。它具有可以将数据插入格式字符串的 format() 方法。
  • RecursiveMethods 看起来像是可重用的......在这种情况下,不要在两个类中都写入 System.out,这会使扩展和重用变得更加困难。

我会给你一个A-。

于 2013-02-05T19:51:27.380 回答