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

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

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

Студворк — интернет-сервис помощи студентам
Вычислить суммы первых K чисел Фибоначчи для K=1 … N.
a)Не храним промежуточные значения вычислений.
b)Храним промежуточные значения вычислений.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.11.2012, 09:11
Ответы с готовыми решениями:

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

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

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

12
 Аватар для v.a.l.i.d
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913
24.11.2012, 14:00
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
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
24.11.2012, 14:01
Цитата Сообщение от 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
 Аватар для v.a.l.i.d
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913
24.11.2012, 14:08
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
наказывать за такое надо.
Почему? я проверял и все правильно

Добавлено через 3 минуты
Kuzia domovenok, все понял. спасибо. тогда можно через массивы сделать.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
24.11.2012, 14:48
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
Сообщений: 39
08.11.2017, 09:55
интересно что в обеих программах, ответ разный)
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
08.11.2017, 12:12
Цитата Сообщение от 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
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
08.11.2017, 13:41
Я бы решал эту задачу так (числа Фибоначчи лучше не вычислять с помощью рекурсии, медленно будет работать):

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
Сообщений: 39
08.11.2017, 13:46
Fixer_84, ну да ваш метод быстрее последнего на 0.5 секунды)) только не понятно почему К-- ? объясните для недалеких)
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
08.11.2017, 13:52
n00baS_, последний метод - это то же самое, что у меня Просто поздно увидел его (пост #5). Я имел ввиду пост #2, где используется рекурсия. При большом количестве чисел Фибоначчи (в моем коде - это число K) он будет работать очень медленно.
1
0 / 0 / 0
Регистрация: 27.09.2017
Сообщений: 39
10.11.2017, 10:44
Fixer_84, а можно полюбопытствовать, а у Вас какой метод?
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
10.11.2017, 12:57
n00baS_, здравствуйте. Я просто использовал цикл while, задав начальные значения для a и b. Дальше, так как числа Фибоначчи формируются по заданному правилу (каждое последующее число равно сумме двух предыдущих, то есть с = a + b), я просто отразил это правило в цикле, задав необходимое количество чисел. Если честно, это не мой метод. Я узнал об этом от своего преподавателя по программированию. Так работает намного быстрее, так как необходимые операции - это только лишь присваивание и сложение (а такие операции, как вы, наверное, знаете, обрабатываются очень быстро).
0
0 / 0 / 0
Регистрация: 27.09.2017
Сообщений: 39
10.11.2017, 13:21
Fixer_84, ну я примерно это и предполагал, только услышал от умных людей (от Вас)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.11.2017, 13:21
Помогаю со студенческими работами здесь

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

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

Вычислить и вывести на печать последовательность первых 20 чисел Фибоначчи
Вычислить и вывести на печать последовательность первых 20 чисел Фибоначчи, если Х(1)=1, Х(2)= 2, а каждый последующий элемент равен сумме...

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

Вычислить и представить в виде массива последовательность первых 20-и чисел Фибоначчи
Вычислить и представить в виде массива последовательность первых 20-и чисел Фибоначчи, если Xi ~ 1, Xi = 2, а каждый последующий элемент...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru