Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
VovaMazur
-12 / 33 / 8
Регистрация: 10.03.2011
Сообщений: 133
#1

Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) - C++

22.03.2011, 03:00. Просмотров 2056. Ответов 14
Метки нет (Все метки)

Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk;
k = 1, 2, 3,...)
C++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2011, 03:00     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...)
Посмотрите здесь:

найти первые N целых чисел C++
C++ Найти среди первых чисел Фибоначчи хотя бы одно, делящееся на m
C++ Вывести на экран первые 20 чисел Фибоначчи.
C++ Набрать с чисел Фибоначчи в интервале от 1 до 100, только просто числа, а также их порядковые номера в ряду Фибоначчи
Найти первые n чисел, которые делятся на 7 без остатка C++
C++ Найти сумму чисел Фибоначчи, меньших заданного числа Q
Посчитать первые 10 чисел Фибоначчи C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fruktik
 Аватар для fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
22.03.2011, 03:44     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) #2
VovaMazur,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main(void)
 {  
    setlocale(LC_ALL, "Russian");
    int n;
    int i,i1=1,i2=1;
    cout << "n=";
    cin >> n;
    cout << "1-е число = 1" << "\n";
    for (int k = 0; k < n; k++)
     { i = i1 + i2;
       i1 = i2;
       i2 = i;
       cout<<k+2<<"-е число = " << i <<"\n";
     }
    system("pause");
 }
можно еще с помощью рекурсии
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
22.03.2011, 04:42     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) #3
Числа Фибоначчи

Первое положительное число как бэ ноль.
Второе единица.

C++
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
void fib_helper(std::vector<int>& vec, int first, int second, int n)
{
    int res=first+second;
    vec.push_back(res);
    if(n == 0)
        return;
    fib_helper(vec, second, res, --n);
}
 
std::vector<int> fib(int n)
{
    std::vector<int> vec;
    int first=0;
    int second=1;
    vec.push_back(first);
    vec.push_back(second);
    fib_helper(vec, first, second, n-2);
    return vec;
}
 
int main()
{
    int n=0;
    std::cout<<"Enter n: ";
    std::cin>>n;
    std::vector<int> vec=fib(n);
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
}
Байт
Эксперт C
 Аватар для Байт
15074 / 9476 / 1389
Регистрация: 24.12.2010
Сообщений: 17,541
22.03.2011, 09:23     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Первое положительное число как бэ ноль.
ForEveR, хотел было обрушиться на тебя с высоты всего своего чуть выше среднего образования, но покопавшись в инете, увидел столько бреда на эту тему! Шерсть дыбом!
Так что вины твоей здесь нет, это вот такое дурацкое расхожее мнение.
И если люди не могут договориться о такой ерунде, то что говорить о вещах чуть более сложных.
На всякий случай сообщаю, что с точки зрения классической математики Ноль является неотрицательным числом. А положительным он никогда не был.
silent_1991
Эксперт C++
4949 / 3025 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
22.03.2011, 09:55     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) #5
Добавлю, что нуль есть число, делящее числовой ряд на две части - положительные и отрицательные числа. А сам он ни к тем, ни к другим не относится.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
22.03.2011, 12:05     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) #6
Байт, Черт ну да. Ночью писал. Не подумал, что пишу. Извиняюсь сильно.
Байт
Эксперт C
 Аватар для Байт
15074 / 9476 / 1389
Регистрация: 24.12.2010
Сообщений: 17,541
22.03.2011, 13:01     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) #7
Цитата Сообщение от ForEveR Посмотреть сообщение
Байт, Черт ну да. Ночью писал. Не подумал, что пишу. Извиняюсь сильно.
Да ерунда, каждый может ошибиться, да еще ночью, да еще если пивка принять на грудь. Прости, если чем обидел, но меня тут смутило другое. Полез в Гугл, чтоб найти определение положительного числа и НЕ НАШЕЛ! Вместо этого столько бреда и ахинеи, что уши вянут.
Вот, люди добрые помогли, ссылочку откопал.
http://mathworld.wolfram.com/PositiveInteger.html
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
22.03.2011, 13:32     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Байт Посмотреть сообщение
хотел было обрушиться на тебя с высоты всего своего чуть выше среднего образования
Первой мыслью было тоже поржать, но передумал. Мало того, вот шаманская чудо-формула для вымучивания чисел Фибоначчи, при чём не обязательно их каждый раз все считать, можно сразу нужное получить... На большие числа не закладывался, суть не в этом...

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <math.h>
 
unsigned long fib(unsigned n){
    return (unsigned long)((1.0/(pow(2.0, (double)n) * sqrt(5.0)))*(pow((1.0 + sqrt(5.0)), (double)n) - pow((1.0 - sqrt(5.0)), (double)n)));
}
 
int main(void){
    unsigned n, i;
    
    while ( printf("n = ") && scanf("%u", &n) == 1 && n )
        for ( i = 1; i <= n; ++i )
            printf("#%d\t%lu\n", i, fib(i));
    
    return 0;
}
Байт
Эксперт C
 Аватар для Байт
15074 / 9476 / 1389
Регистрация: 24.12.2010
Сообщений: 17,541
22.03.2011, 15:27     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) #9
easybudda, Пока базарили за Ноль, забыли про золотое сечение. Класс!
plosha
1 / 1 / 0
Регистрация: 05.06.2013
Сообщений: 8
05.06.2013, 16:31     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) #10
А если вспомнить про Золотое сечение...Есть ли пример программы(желательно как раз с числами Фибоначчи) который иллюстрирует этот метод? Был бы безмерно благодарен
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
05.06.2013, 16:37     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) #11
plosha, а через пост выше - не оно?
plosha
1 / 1 / 0
Регистрация: 05.06.2013
Сообщений: 8
05.06.2013, 16:43     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) #12
Эм, да, действительно, не так прочел) Спасибо за прогу. Не мог бы прокомментировать данный фрагмент:

printf("#%d\t%lu\n", i, fib(i))
Belfegor
Ghost
 Аватар для Belfegor
172 / 172 / 6
Регистрация: 16.09.2012
Сообщений: 524
05.06.2013, 16:53     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) #13
C++
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
42
43
44
45
46
47
48
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<string>
#include<set>
#include<algorithm>
#include<iomanip>
 
using namespace std;
 
typedef long long ll;
typedef unsigned long long ull;
 
void mul(ll *dest, const ll* src) {
    ll r0, r1, r2, r3;
    r0 = dest[0] * src[0] + dest[1] * src[2];
    r1 = dest[0] * src[1] + dest[1] * src[3];
    r2 = dest[2] * src[0] + dest[3] * src[2];
    r3 = dest[2] * src[1] + dest[3] * src[3];
    dest[0] = r0;
    dest[1] = r1;
    dest[2] = r2;
    dest[3] = r3;
}
 
ll fib(ll n) {
    ll Mpower[] = {0, 1, 1, 1};
    ll Mresult[] = {1, 0, 0, 1};
    int k = n + 1;
    while (k) {
        if (k & 1)mul(Mresult, Mpower);
        mul(Mpower, Mpower);
        k >>= 1;
    }
    return Mresult[1];
}
 
int main() {
    ll n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cout << fib(i) << ' ';
    }
    cout << endl;
 
    return 0;
}
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
05.06.2013, 16:54     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) #14
plosha, вывод номера числа Фибоначчи и самого числа. К примеру
C
1
printf("#%d\t%lu\n", 3, fib(3))
выведет
Код
#3	2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2013, 17:49     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...)
Еще ссылки по теме:

C++ Посчитать первые числа Фибоначчи и показать, что сумма этих чисел кратна 11
C++ Найти сумму чисел Фибоначчи в последовательности
C++ Найти первые 25 тетраэдральных чисел
Найти наибольший общий делитель двух чисел Фибоначчи C++
Найти сумму чисел Фибоначчи меньше заданного числа Q C++

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

Или воспользуйтесь поиском по форуму:
plosha
1 / 1 / 0
Регистрация: 05.06.2013
Сообщений: 8
05.06.2013, 17:49     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...) #15
Цитата Сообщение от Belfegor Посмотреть сообщение
C++
1
2
3
4
#include<iostream>
#include<cmath>
...
}
Прокомментируйте пожалуйста, хотя бы в кратце.

Добавлено через 49 минут
И еще родился вопрос, почему числа корректно считаются только до 93 числа? Это как-то можно изменить? Дело наверно типах данных?
Yandex
Объявления
05.06.2013, 17:49     Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk; k = 1, 2, 3,...)
Ответ Создать тему
Опции темы

Текущее время: 06:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru