2014-02-18 5 views
0

Это мой исходный код:печать макс значений

public class Fibbonaci { 

static int count; 
static int size; 

public static int Fibbonaci(int n) { 
    count++; 

    if (n == 0) { 
     return 1; 
    } 
    if (n % 10 == 0) { 
     return (Fibbonaci(n/2) + Fibbonaci(n/5)); 
    } else if (n % 6 == 0) { 
     return (Fibbonaci(n/2) + Fibbonaci(n/3)); 
    } else { 
     return (Fibbonaci(n/3) + Fibbonaci(n/5)); 
    } 

} 

public static void main(String[] args) { 
    int[] lim = new int[1024]; 

    for (int n = 1; n <= lim.length - 1; n++) { 
     count = 0; 
     Fibbonaci(n); 
     size = (int) Math.floor(Math.log(n)/Math.log(2)) + 1; 

     System.out.print("T(" + size + ") = "); 
     System.out.println("" + count); 
    } 
} 

}

Некоторые из моего токового выхода заключается в следующем:

T(1) = 3 
T(2) = 3 
T(2) = 5 
T(3) = 5 
T(3) = 7 
T(3) = 9 
T(3) = 7 
T(4) = 7 
T(4) = 9 
T(4) = 11 
T(4) = 9 
T(4) = 15 

Как я могу напечатать максимальное значение для размера и count, где i можно получить выходной сигнал, аналогичный T (1) = 3 T (2) = 5 T (3) = 9 T (4) = 15?

ответ

1

Сохраните список значений для каждого размера (желательно в Map), отсортируйте этот список и распечатайте самый большой элемент.

EDIT Даже проще - перезаписать значение для каждого размера в Map<Integer, Integer> и как последний результат является самым большим, последнее значение в Map является самым большим для этого размера.

0

Вы можете хранить максимальное значение в переменной и сравнить его внутри цикла

maxValue = 0; 
if (X > maxValue){ 
    maxValue = X 
} 

Кроме того, вы можете использовать коллекцию и заказать его, использовать компараторы. Но только так вы знаете, есть намного лучшие реализации для Фибоначчи (только Google для него)

Использование списка заказа: how to get maximum value from the List/ArrayList

Использование компараторов http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html

Смежные вопросы