Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Nzr
1

Вычислить суммы первых K чисел Фибоначчи для K=1 … N

24.11.2012, 09:11. Просмотров 2498. Ответов 12
Метки нет (Все метки)


Вычислить суммы первых K чисел Фибоначчи для K=1 … N.
a)Не храним промежуточные значения вычислений.
b)Храним промежуточные значения вычислений.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2012, 09:11
Ответы с готовыми решениями:

Используя одномерный массив, составить программу для вывода десяти первых чисел Фибоначчи и их суммы
1). Используя одномерный массив, составить программу для вывода десяти первых чисел Фибоначчи и их...

Вычисление суммы первых n чисел Фибоначчи
Нужна помощь в составлении программ 1. вычисление суммы первых n чисел Фибоначчи (числа Фибоначчи ...

Вычисление суммы первых n чисел Фибоначчи
(числа Фибоначчи 1,1,2,3,5,8 и т.д., т.е. каждое последующее число равно сумме двух предыдущих)...

Рекурсивное вычисление суммы первых n чисел Фибоначчи
вычислить сумму первых n членов чисел Фибоначи составить рекурсивную задачу

12
417 / 382 / 113
Регистрация: 21.09.2012
Сообщений: 913
24.11.2012, 14:00 2
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
#include "stdafx.h"
#include "iostream"
using namespace std;
 
unsigned long fibon(unsigned int n);
 
int _tmain(int argc, _TCHAR* argv[])
{
    int K;
    unsigned long summ = 0;
 
    cin >> K;
 
    for (int i=0; i<K; i++)
        summ += fibon(i);
 
    cout << summ << endl;
 
    system("pause");
    return 0;
}
 
 
unsigned long fibon(unsigned int n)
{
    if (n==0 || n==1) return n;
    return fibon(n-1) + fibon(n-2);
}
0
3317 / 2694 / 729
Регистрация: 25.03.2012
Сообщений: 9,733
Записей в блоге: 1
24.11.2012, 14:01 3
Цитата Сообщение от V.A.L.I.D Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
 #include "iostream" 
using namespace std;
 unsigned long fibon(unsigned int n);
 int _tmain(int argc, _TCHAR* argv[]) {
 int K; unsigned long summ = 0;
 cin >> K; for (int i=0; i<K; i++)
 summ += fibon(i); 
cout << summ << endl;
 system("pause"); 
return 0; 
} 
unsigned long fibon(unsigned int n) {
 if (n==0 || n==1) return n;
 return fibon(n-1) + fibon(n-2); 
}
наказывать за такое надо. Ты каждый раз рекурсивно пересчитываешь каждое новое число Фибонначчи, хотя в процессе вычисления суммы, ты уже все предыдущие числа считал из-за таких как ты системные требования ПО растут!!!
2
417 / 382 / 113
Регистрация: 21.09.2012
Сообщений: 913
24.11.2012, 14:08 4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
наказывать за такое надо.
Почему? я проверял и все правильно

Добавлено через 3 минуты
Kuzia domovenok, все понял. спасибо. тогда можно через массивы сделать.
0
3317 / 2694 / 729
Регистрация: 25.03.2012
Сообщений: 9,733
Записей в блоге: 1
24.11.2012, 14:48 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
int main(){
    int K; 
    unsigned long summ = 2;
    cin >> K;
    int f1=1;    
    int f2=1;
    int temp;
    if(k==1) cout<<1;
    else if (k==2) cout<<2;
    else{
    for (int i=3; i<=K; i++)
    {
        temp=f1+f2;//текущее число
        sum+=temp;//сумма
        f1=f2;    //пред-предыдущее число
        f2=temp;//предыдущее число
        }//end for
        cout<<sum;
    }//end if else
}
Добавлено через 37 минут
поправка
C++
1
unsigned long sum = 2;
0
0 / 0 / 0
Регистрация: 27.09.2017
Сообщений: 40
08.11.2017, 09:55 6
интересно что в обеих программах, ответ разный)
0
Эксперт C
25438 / 15831 / 3386
Регистрация: 24.12.2010
Сообщений: 34,629
08.11.2017, 12:12 7
Цитата Сообщение от n00baS_ Посмотреть сообщение
интересно что в обеих программах, ответ разный)
Просто в одном случае рассматривается ряд 0 1 1 2 3 5 8, а в другом 1 1 2 3 5 8 13

Добавлено через 2 минуты
v.a.l.i.d, Kuzia domovenok, можно еще посчитать Fk+2 и отнять от него единичку...
0
1471 / 935 / 809
Регистрация: 30.04.2016
Сообщений: 3,251
08.11.2017, 13:41 8
Я бы решал эту задачу так (числа Фибоначчи лучше не вычислять с помощью рекурсии, медленно будет работать):

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
#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    int K, sum = 0;
    int a, b, c;
    cin >> K;
    a = 1;
    b = 1;
    while (K > 0)
    {
        K--;
        c = a + b;
        cout << a << " ";
        sum += a;
        a = b;
        b = c;
    }
    cout << "\n" << sum << "\n";
    return 0;
    cin.get();
}
0
0 / 0 / 0
Регистрация: 27.09.2017
Сообщений: 40
08.11.2017, 13:46 9
Fixer_84, ну да ваш метод быстрее последнего на 0.5 секунды)) только не понятно почему К-- ? объясните для недалеких)
0
1471 / 935 / 809
Регистрация: 30.04.2016
Сообщений: 3,251
08.11.2017, 13:52 10
n00baS_, последний метод - это то же самое, что у меня Просто поздно увидел его (пост #5). Я имел ввиду пост #2, где используется рекурсия. При большом количестве чисел Фибоначчи (в моем коде - это число K) он будет работать очень медленно.
1
0 / 0 / 0
Регистрация: 27.09.2017
Сообщений: 40
10.11.2017, 10:44 11
Fixer_84, а можно полюбопытствовать, а у Вас какой метод?
0
1471 / 935 / 809
Регистрация: 30.04.2016
Сообщений: 3,251
10.11.2017, 12:57 12
n00baS_, здравствуйте. Я просто использовал цикл while, задав начальные значения для a и b. Дальше, так как числа Фибоначчи формируются по заданному правилу (каждое последующее число равно сумме двух предыдущих, то есть с = a + b), я просто отразил это правило в цикле, задав необходимое количество чисел. Если честно, это не мой метод. Я узнал об этом от своего преподавателя по программированию. Так работает намного быстрее, так как необходимые операции - это только лишь присваивание и сложение (а такие операции, как вы, наверное, знаете, обрабатываются очень быстро).
0
0 / 0 / 0
Регистрация: 27.09.2017
Сообщений: 40
10.11.2017, 13:21 13
Fixer_84, ну я примерно это и предполагал, только услышал от умных людей (от Вас)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2017, 13:21

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Вычислить массив чисел из первых 16 элементов числа чисел Фибоначчи в виде квадратной матрицы
Вычислить массив чисел из первых 16 элементов числа чисел Фибоначчи в виде квадратной матрицы

Вычислить и вывести на печать последовательность первых 20 чисел Фибоначчи
Вычислить и вывести на печать последовательность первых 20 чисел Фибоначчи, если Х(1)=1, Х(2)= 2, а...

Практика MathCad - Вычислить сумму первых 1000 чисел Фибоначчи
помогите написать практику, вот задание: Вычислительная среда MathCad. Вычислить сумму первых 1000...

Вычислить и представить в виде массива последовательность первых 20-и чисел Фибоначчи
Вычислить и представить в виде массива последовательность первых 20-и чисел Фибоначчи, если Xi ~...


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

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

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