Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 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. Просмотров 2158. Ответов 14
Метки нет (Все метки)

Найти первые n чисел Фибоначчи (f0 = 1; f1 = 1; fk +1 = fk-1 + fk;
k = 1, 2, 3,...)
C++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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,...) (C++):

Найти первые N чисел Фибоначчи (рекурсия/итерация, сравнить эффективность) - C++
Найти первые N чисел Фибоначчи двумя способами: с помощью рекурсии и с помощью итерации. Сравнить эффективность алгоритмов.

Посчитать первые 10 чисел Фибоначчи - C++
Помогите пожалуйста с решением задачи. Задача: Посчитать первые 10 чисел Фибоначчи и показать что сумма этих чисел ровна 11,...

Вывести на экран первые 20 чисел Фибоначчи. - C++
Помогите решить задачи через цикл do _ while: 1) Вывести на экран первые 20 чисел Фибоначчи. Каждое последующее число равно сумме двух...

Посчитать первые числа Фибоначчи и показать, что сумма этих чисел кратна 11 - C++
Посчитать первые числа фибоначчи и показать, что сумма этих чисел кратно 11 и вывести результат на экран и записать в файл. #include...

Найти первые 25 тетраэдральных чисел - C++
Тетраэдральные числа возникают при складывании шаров горкой так, чтобы они не раскатывались. Получается тетраэдр. Каждый слой в такой...

найти первые N целых чисел - C++
найти первые N целых чисел, у которых младший байт является зеркальным отражением следующего байта

14
fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
22.03.2011, 03:44 #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");
 }
можно еще с помощью рекурсии
2
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
22.03.2011, 04:42 #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, " "));
}
1
Байт
Эксперт C
16541 / 10811 / 1638
Регистрация: 24.12.2010
Сообщений: 20,847
22.03.2011, 09:23 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Первое положительное число как бэ ноль.
ForEveR, хотел было обрушиться на тебя с высоты всего своего чуть выше среднего образования, но покопавшись в инете, увидел столько бреда на эту тему! Шерсть дыбом!
Так что вины твоей здесь нет, это вот такое дурацкое расхожее мнение.
И если люди не могут договориться о такой ерунде, то что говорить о вещах чуть более сложных.
На всякий случай сообщаю, что с точки зрения классической математики Ноль является неотрицательным числом. А положительным он никогда не был.
3
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
22.03.2011, 09:55 #5
Добавлю, что нуль есть число, делящее числовой ряд на две части - положительные и отрицательные числа. А сам он ни к тем, ни к другим не относится.
2
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
22.03.2011, 12:05 #6
Байт, Черт ну да. Ночью писал. Не подумал, что пишу. Извиняюсь сильно.
1
Байт
Эксперт C
16541 / 10811 / 1638
Регистрация: 24.12.2010
Сообщений: 20,847
22.03.2011, 13:01 #7
Цитата Сообщение от ForEveR Посмотреть сообщение
Байт, Черт ну да. Ночью писал. Не подумал, что пишу. Извиняюсь сильно.
Да ерунда, каждый может ошибиться, да еще ночью, да еще если пивка принять на грудь. Прости, если чем обидел, но меня тут смутило другое. Полез в Гугл, чтоб найти определение положительного числа и НЕ НАШЕЛ! Вместо этого столько бреда и ахинеи, что уши вянут.
Вот, люди добрые помогли, ссылочку откопал.
http://mathworld.wolfram.com/PositiveInteger.html
2
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
22.03.2011, 13:32 #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;
}
3
Байт
Эксперт C
16541 / 10811 / 1638
Регистрация: 24.12.2010
Сообщений: 20,847
22.03.2011, 15:27 #9
easybudda, Пока базарили за Ноль, забыли про золотое сечение. Класс!
1
plosha
1 / 1 / 0
Регистрация: 05.06.2013
Сообщений: 8
05.06.2013, 16:31 #10
А если вспомнить про Золотое сечение...Есть ли пример программы(желательно как раз с числами Фибоначчи) который иллюстрирует этот метод? Был бы безмерно благодарен
0
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
05.06.2013, 16:37 #11
plosha, а через пост выше - не оно?
1
plosha
1 / 1 / 0
Регистрация: 05.06.2013
Сообщений: 8
05.06.2013, 16:43 #12
Эм, да, действительно, не так прочел) Спасибо за прогу. Не мог бы прокомментировать данный фрагмент:

printf("#%d\t%lu\n", i, fib(i))
0
Belfegor
Ghost
173 / 173 / 6
Регистрация: 16.09.2012
Сообщений: 526
05.06.2013, 16:53 #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;
}
1
easybudda
Модератор
Эксперт CЭксперт С++
9693 / 5643 / 962
Регистрация: 25.07.2009
Сообщений: 10,848
05.06.2013, 16:54 #14
plosha, вывод номера числа Фибоначчи и самого числа. К примеру
C
1
printf("#%d\t%lu\n", 3, fib(3))
выведет
Код
#3	2
0
plosha
1 / 1 / 0
Регистрация: 05.06.2013
Сообщений: 8
05.06.2013, 17:49 #15
Цитата Сообщение от Belfegor Посмотреть сообщение
C++
1
2
3
4
#include<iostream>
#include<cmath>
...
}
Прокомментируйте пожалуйста, хотя бы в кратце.

Добавлено через 49 минут
И еще родился вопрос, почему числа корректно считаются только до 93 числа? Это как-то можно изменить? Дело наверно типах данных?
0
05.06.2013, 17:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2013, 17:49
Привет! Вот еще темы с ответами:

Вывести первые 11 членов последовательности Фибоначчи - C++
Доброго времени суток, уважаемые программисты. Хотел бы попросить Вас о помощи в решении программ по C++. хочу предупредить, что на...

Найти сумму чисел Фибоначчи в последовательности - C++
Помогите, пожалуйста решить : Задана последовательность чисел, которая заканчивается 0-ем. Нужно найти сумму чисел Фибоначчи в этой...

Найти, входит ли в последовательность чисел l-е число Фибоначчи - C++
Дана упорядоченная последовательность натуральных чисел b произвольной длины. Найти, входит ли в эту последовательность l-е число...

Набрать с чисел Фибоначчи в интервале от 1 до 100, только просто числа, а также их порядковые номера в ряду Фибоначчи - C++
Помогите с задачкой Набрать с чисел Фибоначчи в интервале от 1 до 100, только просто числа, а также их порядковые номера в ряду...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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