Nano Hash - криптовалюты, майнинг, программирование

Последовательность Фибоначчи назад

Вот код:

class Fibonacci {
    static final int MIN_INDEX = 1;
    public static void main (String[] args){
        int high = 1;
        int low = 1;
        String jel;
        System.out.println("9: " + high);

    for (int i = 8; i >= MIN_INDEX; i--){
        if (high % 2 == 0)
            jel = " *";
        else 
            jel = " ";
        System.out.println(i + ": " + high + jel);
        high = low + high;
        low = high - low;


    }
}
}

Я хочу сделать эту программу, чтобы записать выходные числа в обратном порядке. Поэтому я хочу, чтобы не только шаг 'i' шел от последнего к первому, но и числа.

В этом примере вывод: 1, 1, 2, 3, 5, 8, например... Но я хочу показать, что последовательность выглядит так: например..., 8, 5, 3, 2, 1 , 1.

Я пытался изменить высокий и низкий уровень, но я не могу заставить эту программу работать «назад».

01.04.2011

Ответы:


1

Ага.. как говорят другие люди.. я бы хранил в коллекциях, затем сортировал и распечатывал

я только что изменил ваш пример... запустите его и посмотрите, ожидаемое ли это поведение.

class Fibonacci {
static final int MIN_INDEX = 1;

public static void main(String[] args) {
    int high = 1;
    int low = 1;
    String jel;
    List<String> numbers = new ArrayList<String>();
    numbers.add("9: " + high);

    for (int i = 8; i >= MIN_INDEX; i--) {
        if (high % 2 == 0) {
            jel = " *";
        }
        else {
            jel = " ";
        }
        numbers.add(i + ": " + high + jel);
        high = low + high;
        low = high - low;
    }

    Collections.sort(numbers);
    System.out.println(numbers);
}

}

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

  • 2

    Здесь нет Java, но Числа Фибоначчи имеют явную закрытую форму:

    f[n_] := N@(GoldenRatio^n - (1 - GoldenRatio)^n)/Sqrt[5];  
    

    Где

    Золотое отношение = (1 + Sqrt[5])/2

    Итак, вы можете сделать:

    For[i = 10, i > 0, i--,
         Print[f[i]];
      ];  
    

    Выход:

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

    Изменить

    В качестве примечания: Золотое сечение — одно из тех замечательных вездесущих чисел. которые вы найдете в природе, науке и искусстве.

    Вы можете найти золотое сечение от Морских раковин до Парфенона.

    26.04.2011

    3

    Вы могли бы вставить их в массив по мере продвижения, а затем просто перевернуть массив и распечатать их? Не совсем эффективно, но это легко сделать.

    01.04.2011

    4

    Есть две возможности:

    1. Сохраните числа вместо того, чтобы печатать их, и в конце распечатайте их в обратном порядке.
    2. Запустите алгоритм вперед, чтобы обнаружить два последних числа, а затем создайте и напечатайте обратный ряд r на лету, отметив, что r[i]=r[i-2]-r[i-1].
    01.04.2011
  • Вы имеете в виду f[i] = f[i+1] - f[i+1], не так ли? 01.04.2011
  • Нет, не знаю. В 8, 5, 3, 2, 1, 1 каждое слагаемое представляет собой разницу между элементом на два шага вперед и непосредственно предшествующим слагаемым. 01.04.2011
  • Ах, но тогда не называйте это f, лучше используйте что-то вроде rf или что-то в этом роде (обратное Фибоначчи). 01.04.2011

  • 5

    Одним из вариантов было бы сохранять выходные данные в массиве по мере продвижения, а затем перемещаться по массиву в обратном направлении.

    01.04.2011

    6

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

    01.04.2011

    7

    Я бы тоже просто запускал последовательность в обычном режиме (т.е. не в обратном порядке) и сохранял результаты в коллекции (вероятно, в ArrayList). Но нет необходимости сортировать после или даже перемещаться по списку в обратном порядке, вы можете просто добавлять каждую новую «запись» в последовательности в позицию 0 в списке по мере использования:

    list.add(0, i + ": " + high + jel);
    

    Это гарантирует, что список сохранит последовательность в обратном порядке.

    Это просто еще одно возможное решение.

    01.04.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..