Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
9 / 9 / 3
Регистрация: 22.01.2012
Сообщений: 122

Числа Фибонначи

25.01.2012, 22:46. Показов 1289. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
у меня такая дана задача:
Определить функцию нахождения чисел Фибоначчи с порядковым номером n (a0=1, a1=1, a2=2, an=an-1+an-2.). Построить матрицу [n n], где каждый элемент матрицы – сумма чисел Фибоначчи, соответствующих номеру строки и столбца.
Вот программа:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Fibanachi{
  public static void main(int n){
    System.out.println ("+++++++++++++++++++++++++++++++++++++");
    System.out.println ("+++++++++++++ Задача 6.1 ++++++++++++++");
    System.out.println ("+++++++++++++++++++++++++++++++++++++");
      if (n>1){
        int[] matr = new int[n];
        int[] f = {0, 1, 1};
        matr[0] = f[0];
        matr[1] = f[1];
    for (int i=2; i<=n-1; i++){
         f[0] = f[1];
         f[1] = f[2];
         f[2] = f[1] + f[0];
      matr[i] = f[2];
     }
    for(int i=0; i<n; i++){
      for(int j=0; j<n; j++){
          System.out.print(matr[i] + matr[j]+"\t"); }
          System.out.println();} 
        } else 
            if (n==1) System.out.println("0");
    else System.out.println("Введите правильное натуральное число");
    }}
но она должна выводить таблицу
типа:
0 1 1 2 3 5, а оно выводит 0 1 2 3 5. как это изменить?
пробовал дописать:

Java
1
2
matr[2] = f[2];    
     for (int i=3; i<=n-1; i++){
работает, но при вводе 2, выдает ошибку ilegal start of expression
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2012, 22:46
Ответы с готовыми решениями:

Вывод числа Фибонначи
Добрый день! Новичок в java, захотел написать программу для вычисления n-ого числа Фибонначи, номер которого введен с клавиатураы. Написал...

Задачи з числом Фибонначи и факториалом
Первая задача работает, но вторая видает ошыбку Задача 1. Программа имеет считать числа Фибоначчи и выводить результаты на...

Числа Фибонначи
Добрый день, у меня есть код который считает числа Фибонначи public static int fib(int arg){ if(arg == 0){ return 1; }else...

12
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
26.01.2012, 03:11
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Scanner;
 
public class Fibonachhi {
 
    public static void main(String[] args) {
        System.out.println("+++++++++++++++++++++++++++++++++++++");
        System.out.println("+++++++++++++ Задача 6.1 ++++++++++++++");
        System.out.println("+++++++++++++++++++++++++++++++++++++");
        Scanner scan = new Scanner(System.in);
        System.out.println("Введите число");
        int N = scan.nextInt();
        for (int i = 1; i <= N; i++)
            System.out.println(i + ": " + fib(i));
    }
 
    public static long fib(int n) {
        if (n <= 1)
            return n;
        else
            return fib(n - 1) + fib(n - 2);
    }
}
Добавлено через 38 минут
А это для размышления
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.math.BigInteger;
 
public class Fibonachhi {
 
    public static void main(String[] args) {
        int N = 10000;
        long t1 = System.currentTimeMillis();
        for (int i = 1; i <= N; i++) {
            if (i < 40) {
                System.out.println(i + " recursive: " + fibonacciRecursive(i));
            } else {
                System.out.println("It can never ends ;)");
            }
        }
        long t2 = System.currentTimeMillis();
        for (int i = 1; i <= N; i++) {
            System.out.println(i + " loop: " + fibonacciForLoop(i));
        }
        long t3 = System.currentTimeMillis();
        System.out.println("recursive takes " + (t2 - t1) + " milliseconds" + System.getProperty("line.separator")
                + "loop takes " + (t3 - t2) + " milliseconds");
    }
 
    public static long fibonacciRecursive(int n) {
        return (n <= 1) ? n : (fibonacciRecursive(n - 1) + fibonacciRecursive(n - 2));
    }
 
    public static BigInteger fibonacciForLoop(int n) {
        BigInteger[] fib = new BigInteger[n + 1];
        if (n <= 1) {
            return new BigInteger(String.valueOf(n));
        } else {
            fib[0] = new BigInteger(String.valueOf(0));
            fib[1] = new BigInteger(String.valueOf(1));
            for (int i = 2; i < fib.length; i++) {
                fib[i] = fib[i - 1].add(fib[i - 2]);
            }
            return fib[n];
        }
    }
}
1
9 / 9 / 3
Регистрация: 22.01.2012
Сообщений: 122
26.01.2012, 14:02  [ТС]
но суть в том, что нужно построить квадратную матрицу [n n], где каждый элемент матрицы – сумма чисел Фибоначчи, соответствующих номеру строки и столбца. как это сделать?
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
26.01.2012, 15:53
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;
 
public class Fibanachi {
 
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Введите число");
        int N = scan.nextInt();
        String matriza[] = new String[N];
        for (int i = 0; i < matriza.length; i++) {
            matriza[i] = fibonacciForLoop(i).toString();
        }
        System.out.println(Arrays.toString(matriza));
    }
 
    public static BigInteger fibonacciForLoop(int n) {
        BigInteger[] fib = new BigInteger[n + 1];
        if (n <= 1) {
            return new BigInteger(String.valueOf(n));
        } else {
            fib[0] = new BigInteger(String.valueOf(0));
            fib[1] = new BigInteger(String.valueOf(1));
            for (int i = 2; i < fib.length; i++) {
                fib[i] = fib[i - 1].add(fib[i - 2]);
            }
            return fib[n];
        }
    }
}
1
9 / 9 / 3
Регистрация: 22.01.2012
Сообщений: 122
26.01.2012, 22:00  [ТС]
а как доделать этот код, просто мне нужен именно такой код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Fibanachi{
  public static void main(int n){
    System.out.println ("+++++++++++++++++++++++++++++++++++++");
    System.out.println ("+++++++++++++ Задача 6.1 ++++++++++++++");
    System.out.println ("+++++++++++++++++++++++++++++++++++++");
      if (n>1){
        int[] matr = new int[n];
        int[] f = {0, 1, 1};
        matr[0] = f[0];
        matr[1] = f[1];
    for (int i=2; i<=n-1; i++){
         f[0] = f[1];
         f[1] = f[2];
         f[2] = f[1] + f[0];
      matr[i] = f[2];
     }
    for(int i=0; i<n; i++){
      for(int j=0; j<n; j++){
          System.out.print(matr[i] + matr[j]+"\t"); }
          System.out.println();} 
        } else 
            if (n==1) System.out.println("0");
    else System.out.println("Введите правильное натуральное число");
    }}
нужно заменить эту часть
Java
1
2
3
4
5
6
7
8
9
        int[] f = {0, 1, 1};
        matr[0] = f[0];
        matr[1] = f[1];
    for (int i=2; i<=n-1; i++){
         f[0] = f[1];
         f[1] = f[2];
         f[2] = f[1] + f[0];
      matr[i] = f[2];
     }
на цикл for c использованием формулы, что число равно сумме предыдущих. все уже перепробовал, не получается, и чтобы это выводило в виде квадратной матрицы. и чтобы было простенько, все-таки первый курс))
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
26.01.2012, 22:07
Может ты уже наконец напишешь условие задачи? Чесслово не понимаю чего тебе не хватает? Все же уже есть, берешь и комбинируешь все что тебе надо.
1
9 / 9 / 3
Регистрация: 22.01.2012
Сообщений: 122
26.01.2012, 22:23  [ТС]
Построить матрицу [n n], где каждый элемент матрицы – сумма чисел Фибоначчи, соответствующих номеру строки и столбца.
ноя не пойму этот кусок программы:
Java
1
2
3
4
5
6
7
8
int[] f = {0, 1, 1};//лично вот эту  строчку
        matr[0] = f[0];
        matr[1] = f[1];
    for (int i=2; i<=n-1; i++){
         f[0] = f[1];
         f[1] = f[2];
         f[2] = f[1] + f[0];
      matr[i] = f[2];
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
26.01.2012, 23:18
Цитата Сообщение от SERJ2006 Посмотреть сообщение
int[] f = {0, 1, 1};//лично вот эту *строчку
статическое объявление массива int
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;
 
public class Fibanachi {
 
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Введите число");
        int N = scan.nextInt();
        String matriza[][] = new String[N][N];
        for (int i = 0; i < matriza.length; i++) {
            for (int j = 0; j < matriza[i].length; j++) {
                matriza[i][j] = fibonacciForLoop(i).add(fibonacciForLoop(j)).toString();
            }
        }
        for (int i = 0; i < matriza.length; i++) {
            System.out.println(Arrays.toString(matriza[i]));
        }
        
    }
 
    public static BigInteger fibonacciForLoop(int n) {
        BigInteger[] fib = new BigInteger[n + 1];
        if (n <= 1) {
            return new BigInteger(String.valueOf(n));
        } else {
            fib[0] = new BigInteger(String.valueOf(0));
            fib[1] = new BigInteger(String.valueOf(1));
            for (int i = 2; i < fib.length; i++) {
                fib[i] = fib[i - 1].add(fib[i - 2]);
            }
            return fib[n];
        }
    }
}
В той программе что у тебя массив одномерный, поэтому для квадратной матрицы там всё надо переделать. Её там по сути и нет, а есть только попытка сымитировать при печати. Чем тебя не устраивает вариант с методом?
1
9 / 9 / 3
Регистрация: 22.01.2012
Сообщений: 122
27.01.2012, 14:54  [ТС]
вот смотрите, я по вашему образцу написал:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.Arrays;
public class Fibanachi{
  public static void main(int n){
       System.out.println ("+++++++++++++++++++++++++++++++++++++");
       System.out.println ("++++++++++++ Задача 6.1 ++++++++++++++");
       System.out.println ("+++++++++++++++++++++++++++++++++++++");
      int[][] matr = new int[n][n];//создание массива matr типа integer размера n
        for (int i = 0;i<matr.length;i++){
           for (int j=0;j<matr[i].length;j++){
              matr [i] [j]=fib(i)+fib(j);
           }
        }
    for (int i=0; i < matr.length; i++){
      System.out.println (Arrays.toString(matr[i]));
    }
 }      
  public static int fib (int n){
       int [] fib = new int [n+1];{
             if (n>2){
                  for (int i = 2; i<fib.length; i++)
                    fib[i]=fib[i-2]+fib[i-1];}
            else { 
              if (n<=1) return n;}  
       }       
   return fib [n];
 }
}
вроде так же, но не правильно работает, что мне в ней изменить???
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
27.01.2012, 16:02
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class Fibanachi {
        // в java main main(String[] args) - этов С можно main(int n), в java нет
        // иначе словишь ошибку
        // "Exception in thread "main" java.lang.NoSuchMethodError: main"
        public static void main(String[] args) {
            System.out.println("+++++++++++++++++++++++++++++++++++++");
            System.out.println("++++++++++++ Задача 6.1 ++++++++++++++");
            System.out.println("+++++++++++++++++++++++++++++++++++++");
            int n = Integer.parseInt(args[0]);
            // создание массива matr типа integer размера n
            int[][] matr = new int[n][n];
            for (int i = 0; i < matr.length; i++) {
                for (int j = 0; j < matr[i].length; j++) {
                    matr[i][j] = fib(i) + fib(j);
                }
            }
            for (int i = 0; i < matr.length; i++) {
                System.out.println(Arrays.toString(matr[i]));
            }
        }
 
        public static int fib(int n) {
            int[] fib = new int[n + 1];
            if (n <= 1) {
                return n;
            } else {
                fib[0] = 0;
                fib[1] = 1;
                for (int i = 2; i < fib.length; i++)
                    fib[i] = fib[i - 2] + fib[i - 1];
            }
            return fib[n];
        }
    }
1
9 / 9 / 3
Регистрация: 22.01.2012
Сообщений: 122
27.01.2012, 16:38  [ТС]
последний штрих:
смотрите, вот я добавил к своей программе:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.Arrays;
public class Fibanachi{
  public static void main(int n){
       System.out.println ("+++++++++++++++++++++++++++++++++++++");
       System.out.println ("++++++++++++ Задача 6.1 ++++++++++++++");
       System.out.println ("+++++++++++++++++++++++++++++++++++++");
      int[][] matr = new int[n][n];//создание массива matr типа integer размера n
        for (int i = 0;i<matr.length;i++){
           for (int j=0;j<matr[i].length;j++){
              matr [i] [j]=fib(i)+fib(j);
           }
        }
    for (int i=0; i < matr.length; i++){
      System.out.println (Arrays.toString(matr[i]));
    }
 }      
  public static int fib (int n){
       int [] fib = new int [n+1];{
             if (n>2){
                  fib[0] = 0;//эту строчку
                   fib[1] = 1;//и эту- из-за них она не работала
                  for (int i = 2; i<fib.length; i++)
                    fib[i]=fib[i-2]+fib[i-1];}
            else { 
              if (n<=1) return n;}  
       }       
   return fib [n];
 }
}
теперь программа корректно работает кроме 3 столбца и третьей строчки. например я ввожу n=5:
в терминале выводится:
+++++++++++++++++++++++++++++++++++++
++++++++++++ Задача 6.1 ++++++++++++++
+++++++++++++++++++++++++++++++++++++
[0, 1, 0, 2, 3]
[1, 2, 1, 3, 4]
[0, 1, 0, 2, 3]//не правильно что-то работает, а остальное все работает
[2, 3, 2, 4, 5]
[3, 4, 3, 5, 6]
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
27.01.2012, 18:32
Цитата Сообщение от SERJ2006 Посмотреть сообщение
//не правильно что-то работает, а остальное все работает
у тебя n>2, а что делать если n=2 ??? вот тебе и намёк на решение
1
9 / 9 / 3
Регистрация: 22.01.2012
Сообщений: 122
27.01.2012, 18:47  [ТС]
огромное тебе спасибо за помощь!!!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.01.2012, 18:47
Помогаю со студенческими работами здесь

Цикл: Составьте программу, позволяющие найти все числа Фибонначи, меньше заданного числа N.
В 1202 году итальянский математик Леонард Пизанский (Фибоначчи) предложил такую задачу: пара кроликов каждый месяц дает приплод – двух...

С++ числа Фибонначи
Члены классического ряда Фибоначчи вычисляются по следующему правилу f0=0,f1=1,fi=fi-1 + fi-2 . Начало ряда выглядит следующим образом: 0,...

Числа Фибонначи в массиве!
Доброго времени суток. пожалуйста подскажите в такой задачке. надо вывести числа Фибонначи в методе, но вернуть в массиве!!! Числа...

Разностное уравнение формирующее числа Фибонначи, перевод с Pascal
Нужна помощь в переводе программы с Pascal-я на Assembler Выручите, пожалуйста.. Я в Ассеблере вообще ноль. program fibonachi; uses...

Фибонначи
Задача, вывести все числа из ряда фибоначчи в промежутке от n1 до n2 проблема в том что, вывводит значения только при n1=1,а при n1!=1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru