Как усовершенствовать рекурсивные методы серии Фибоначчи в Java - PullRequest
0 голосов
/ 01 апреля 2019

Завтра будет большая Java-программа для моего класса Comp Sci 2.В одной крупной Java-программе есть несколько проблем.

  1. Разработайте рекурсивный метод f1, чтобы вычислить результат 1 + 2 + 4 + 8 + 16 + 32 +… + 4096 и вернуть такую ​​сумму послевызов f1 (4096).Нет необходимости печатать внутри метода.

2. Разработать рекурсивный метод f2 для вычисления результата 1 / i + 2 / (i-1) + 3 / (i-2) +… +(i-1) / 2 + i / 1 и вернуть такое значение.Нет необходимости печатать внутри метода.

3. Население мира достигло 6 миллиардов человек в 1999 году и ежегодно увеличивается на 1,4 процента.Напишите рекурсивную функцию f3 для возврата / определения, когда численность населения превысит 10 миллиардов.

Разработайте рекурсивную функцию f4, которая возвращает последовательность String «1 2 3 4 5… i» при вызове f4 (i).

То же, что число 4,но поменял местамивозвращаемая последовательность String "5 4 3 2 1 ..." при вызове F5 (i).

Разработать рекурсивную функцию f6 для возврата последовательности String «1 2 3 4 5…i (i-1) (i-2)… 5 4 3 2 1 ”, когда вызывается f6 (1, i).

Я уже пытался выяснить правильные операторы ifдля каждого, и попытался выяснить правильные операторы возврата и конечные результаты для каждого.

public class RecursiveMethod{

    public static void main(String[] args){
    F1(4096);
    F2(1);
    F3(6,000,000,000);
    F4(i);
    F5(i);
    F6(1,i);
    }

  public static int F1(int n)
  {
     if (n==0){
        return 1;
     }else{
        return n+n*2;
     }
  }

     public static int F2(int i)
     {
        if(i==0){
           return 0;
        }else{
           return F2(i++) + F2(i--);
        }
     }

        public static int F3(int pop, int rate)
        {
           if(pop<=6,000,000,000){
              return F3;
           }else{
              int Population = pop + (pop * rate / 100);
                 return F3(10,000,000,000);
           }
         }

           public static String F4(String i)
           {
              if(Integer.parseInt(i) <= 1){
                 return "1";
              }else{
                 return i + " " + F4(Integer.parseInt(i)+1);
              }
           }

              public static String F5(String i)
              {
                 if (Integer.parseInt(i) <= 1){
                    return "1";
                 }else{
                    return i + " " + F5(Integer.parseInt(i)-1);
                 }
              }

                 public static String F6(String i)
                 {
                    if (Integer.parseInt(i) <= 1){
                       return "1";
                    }else{
                       return i + " " +  F6(Integer.parseInt(i)+1) + F6(Integer.parseInt(i)-1);
                    }
                 }
}            

Ожидаемые результаты есть в каждом пронумерованном вопросе, хотя каждый вопрос не позволяет мне использовать "System.out.print"внутри.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...