1 / 1 / 0
Регистрация: 22.07.2015
Сообщений: 42
1

В последовательности Фибоначчи найти индекс члена последовательности, удовлетворяющего условию

17.02.2016, 20:54. Показов 1174. Ответов 6
Метки нет (Все метки)

помогите не могу найти ошибку


вводится число A,найти номер К такого числа Фибоначчи ,что Xк-1<=A<Xк.
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
  
#include <iostream>
 
using namespace std;
 
long int fibo(int n) {
    if (n == 0) return 0;
    else if (n == 1) return 1;
    else return (fibo(n - 1) + fibo(n - 2));
}
 
int main() {
    int a, n = 1, xk, xk1;
    cout << "enter A ";
    cin >> a;
    for (n = 1; n < 100; n++)
    {
        xk1 = fibo(n);
        xk = fibo(n + 1);
        n++;
        if (xk1 <= a && a<xk)
 
            break;
        n++;
    }
    cout << "N=" <<n;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2016, 20:54
Ответы с готовыми решениями:

Найти номер и значение члена последовательности удовлетворяющего заданному условию
Даны положительные x,d. Найти номер и значение первого члена последовательности a, построенной по...

Циклы: нахождение n-го члена последовательности и его номера, удовлетворяющего условию
Дана последовательность, заданная формулой: {a}_{n}={arctg(a)}_{n-1}+1, {a}_{1}=0 Написать...

Нахождение члена последовательности удовлетворяющего критерию
Дана последовательность заданная формулой общего члена: an=n!/(2^n )! n=1,2,3,4... Написать...

Найти наименьший номер члена последовательности удовлетворяющий условию
Найти наименьший номер члена последовательности П.5.18.Правил Запрещено размещать задания и...

6
Диссидент
Эксперт C
27192 / 16949 / 3745
Регистрация: 24.12.2010
Сообщений: 38,132
17.02.2016, 22:01 2
Цитата Сообщение от kosetik Посмотреть сообщение
не могу найти ошибку
Хорошо бы узнать, в чем эта ошибка заключается.
Но ошибка главная - подход к задаче. Неужели вам не жалко повторять многократно одни и те же вычисления? А кроме рекурсии вы других способов вычисления фибаначчьевых чисел не знаете?
1
543 / 486 / 104
Регистрация: 05.05.2014
Сообщений: 1,110
18.02.2016, 14:14 3
C++
1
if (n == 0) return 1;
Но это не очень важно, просто сдвигает ряд на 1 позицию.
А вот зачем несколько раз повторять n++ ? Пластинка заела?
0
1 / 1 / 0
Регистрация: 22.07.2015
Сообщений: 42
18.02.2016, 15:09  [ТС] 4
8-BITOV, Байт, решил написать все заново, теперь проблема в том что программа останавливается на члене фибоначчи(номер которого как раз и надо вывести), но сам номер не выводится. Уже дня 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
34
35
36
37
38
39
40
41
42
43
44
45
 
#include <iostream>
using namespace std;
int  main() {
    
 
    int fib[100];
    int n,ch;
    cout << "enter n\n";
    cin >> n;
    fib[0] = 1;
    fib[1] = 1;
    for (int i = 2; i < n; i++)
    {
 
        fib[i] = fib[i - 1] + fib[i - 2];
 
        
    }
 
    cout << "vvedite vashe chislo \n";
    cin >> ch;
 
 
    cout << "posled"<<endl;
    for (int i = 0; i < n; i++)
    {
        cout << fib[i] << " \n";
 
        if (fib[i] >= ch) {
            cout << fib[i] << "nomer k fibonachi=" << i << endl; break;  
        }
        
    }
 
    
 
    
 
 
 
    return 0;
 
 
}
0
115 / 92 / 66
Регистрация: 27.04.2014
Сообщений: 307
18.02.2016, 15:44 5
Или я чего-то не понимаю, но у меня всё равботает вроде бы как тебе нужно:
enter n
20
vvedite vashe chislo
13
posled
1
1
2
3
5
8
13
13 nomer k fibonachi=7
Для продолжения нажмите любую клавишу . . .
И вот твой же код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    int fib[100];
    int n,ch;
    cout << "enter n\n";
    cin >> n;
    fib[0] = 1;
    fib[1] = 1;
    for (int i = 2; i < n; i++)
    {
        fib[i] = fib[i - 1] + fib[i - 2];        
    }
    cout << "vvedite vashe chislo \n";
    cin >> ch;
    cout << "posled"<<endl;
    for (int i = 0; i < n; i++)
    {
        cout << fib[i] << " \n";
 
        if (fib[i] >= ch) {
            cout << fib[i] << " nomer k fibonachi=" << i+1 << endl; break;  
        }        
    }      
 system("pause");
0
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
18.02.2016, 15:48 6
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
 
#include <iostream>
using namespace std;
int  main() {
    
 
    int fib[100];
    int n,ch;
    cout << "enter n\n";
    cin >> n;
    fib[0] = 1;
    fib[1] = 1;
    for (int i = 2; i <= n; i++)
    {
 
        fib[i] = fib[i - 1] + fib[i - 2];
 
        
    }
 
    cout << "vvedite vashe chislo \n";
    cin >> ch;
 
 
    cout << "posled"<<endl;
    for (int i = 0; i <= n; i++)
    {
        cout << fib[i] << " \n";
 
        if (fib[i] >= ch) {
            cout << fib[i] << " nomer k fibonachi=" << i << endl; break;  
        }
        
    }
 
    
 
    
 
 
 
    return 0;
 
 
}
Добавлено через 2 минуты
Это же у тебя не динамический массив, следовательно не бойся ставить в цикле <=
0
1 / 1 / 0
Регистрация: 22.07.2015
Сообщений: 42
18.02.2016, 16:35  [ТС] 7
Difaust, Aymurat, Всем спасибо. Компилятор тупил
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.02.2016, 16:35
Помогаю со студенческими работами здесь

Создать рекурсивную функцию для расчёта n-го члена последовательности Фибоначчи
Всем привет, у меня проблема. Нужно в C++ написать программу, в которой нужно создать рекурсивную...

Написать рекурсивную функцию для вычисления k-го члена последовательности Фибоначчи
Написать рекурсивную функцию для вычисления k-го члена последовательности Фибоначчи. Она образуется...

Найти номер минимального члена последовательности
Дана последовательность целых чисел, за которой следует 0. Найти номер минимального элемента в...

Найти наименьший номер члена последовательности
(фото) 2 задача


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru