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

Рекурсии

11.12.2016, 14:38. Показов 884. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят,программа по задаче 22 из ЕГЭ.
При вводе программа зависает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int f(int n,int c)
{
    if(n<1)
        return 0;
    else 
        return f((n+3)*2,c)+f((n-2)/3,c);
 
}
 
int main()
{
    int a,b;
    scanf("%d%d",&a ,&b);
    printf("%d",f(a,b));
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2016, 14:38
Ответы с готовыми решениями:

рекурсии
Помогите пожалуйста как написать рекурсивную программу для нахождения суммы первых членов...

Рекурсии
Подскажите, в каком месте я ошибся, сижу, думаю и не понимаю, как правильно доделать программу С...

Конкретно о рекурсии
Мой код работает, корректно, но прошу оценить его, действиетльно ли то что я написал является...

Объяснение кода рекурсии
Доброго времени суток! Есть такая рекурсия, вычисляет наибольший элемент: #include &lt;stdio.h&gt; ...

6
62 / 62 / 53
Регистрация: 04.10.2013
Сообщений: 264
12.12.2016, 01:48 2
дело в том, что в функции f, переменная n постоянно растет, а критерий остановки рекурсии, n < 1; поэтому программа зависает
return f((n + 3) * 2, c) + f((n - 2) / 3, c);
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36822 / 20384 / 4229
Регистрация: 12.02.2012
Сообщений: 33,743
Записей в блоге: 13
12.12.2016, 15:16 3
Приведи условие задачи
0
0 / 0 / 0
Регистрация: 09.12.2015
Сообщений: 24
12.12.2016, 17:27  [ТС] 4
Цитата Сообщение от Catstail Посмотреть сообщение
Приведи условие задачи
1) Исполнителю присвоены команды:

Увеличить на 3,затем умножить на 2;
Вычесть 2,затем поделить на 3;
Сколько всего существует программ,преобразующих число 3 в число 65?
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36822 / 20384 / 4229
Регистрация: 12.02.2012
Сообщений: 33,743
Записей в блоге: 13
12.12.2016, 18:23 5
Ты уверен, что 65? Что-то не получается ни разу...
0
0 / 0 / 0
Регистрация: 09.12.2015
Сообщений: 24
12.12.2016, 18:28  [ТС] 6
Цитата Сообщение от Catstail Посмотреть сообщение
Ты уверен, что 65? Что-то не получается ни разу...
Мне главное,чтобы просто составить шаблон на Си,чтобы работал,и чтобы самому задавать начальное и конечное значения.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36822 / 20384 / 4229
Регистрация: 12.02.2012
Сообщений: 33,743
Записей в блоге: 13
12.12.2016, 18:34 7
Как вариант:
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
#include <stdio.h>
#include <stdlib.h>
 
int c;
int F[66];
 
void Next(int n)
{
    int k; 
    if (n==66)  {c++; return;}
    if ((n > 66) || (n < 0)) return;
    k=(n+3)*2;
    if (F[k]==0) {F[k]=1; Next(k);}
    k=(n-2)/3;
    if (F[k]==0) {F[k]=1; Next(k);}
}
 
int main(int argc, char *argv[])
{
 
  int i;
  c=0;
  for (i=1; i<66; i++) F[i]=0;
  
  Next(3);
 
  printf("c=%d\n",c); 
  system("PAUSE");  
  return 0;
}
0
12.12.2016, 18:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.12.2016, 18:34
Помогаю со студенческими работами здесь

Найти ошибку в рекурсии
Когда переменная &quot;с&quot; = 1 и программа должна выйти из функции f() и вернутся в main(), вместо этого,...

Найти ошибку в рекурсии
Где ошибка? #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;locale.h&gt; int...

Приведите примеры рекурсии
наведите примеры рекурсии. спасибо.

Вычислить выражение с помощью рекурсии
Как такое решается?


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

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

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