Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.87/23: Рейтинг темы: голосов - 23, средняя оценка - 4.87
1182 / 467 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
1

Самый самый самый простой пример рекурсии

02.12.2010, 20:39. Просмотров 4607. Ответов 8
Метки нет (Все метки)

приведите самый прост пример рекурсии)))
C++
1
2
3
4
5
6
7
8
9
10
11
12
void main(int k)
{
    int n=10;
    k=n;
    k++;
    n=k;
 
    if(n!=20)main(n);
    cout<<n<<endl;
 
 
}
это рекурсия?Если да то почему n не выводится?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2010, 20:39
Ответы с готовыми решениями:

Как переставить местами самый маленький и самый большой элементы массива?
1. Переставить местами маленький и самый большой элементы массива

Определить самый урожайный и самый неурожайный год в колхозе “Заря”
Нужно написать код к этой задаче: В массиве Urogai(20) хранится урожайность (в центнерах с...

Определить сколько стоит самый дешевый и самый дорогой обед
В столовой предлагается N комплексных обедов, состоящих из Q блюд. Известна стоимость и...

Определить, какой сначала был день самый тёплый или самый холодный?
Динамическая память. В массив занесена информация о температуре за неделю. Определить, какой...

8
Jesus loves me
Эксперт С++
5091 / 3105 / 351
Регистрация: 12.12.2009
Сообщений: 7,840
Записей в блоге: 2
02.12.2010, 20:42 2
потому что n всегда равно 11.
И да, это рекурсия.
0
Freelance
Эксперт С++
2870 / 1805 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
02.12.2010, 20:42 3
Цитата Сообщение от ^Tecktonik_KiLLeR Посмотреть сообщение
приведите самый прост пример рекурсии)))
Как бэ
C++
1
2
3
4
int fact(int n)
{
   return !n || n == 1? 1 : fact(n-1)*n;
}
0
Эксперт С++
5036 / 3096 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
02.12.2010, 20:51 4
Лучший ответ Сообщение было отмечено как решение

Решение

^Tecktonik_KiLLeR, самое главное при написании рекурсивных функций - всегда должен достигаться базис рекурсии (случай, когда функция возвращает не результат своего вызова, а элементарное решение). Где у вас базис? Как, по-вашему, функция должна завершить рекурсивные вызовы, кроме как по переполнении стека?
3
1182 / 467 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
02.12.2010, 21:12  [ТС] 5
silent_1991, ну я же написал ,если не равно 20,то ++.То есть до тех пор пока не 20...разве не так?
0
Эксперт С++
5036 / 3096 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
02.12.2010, 21:16 6
Вы сами перечитайте свой код.
10 Ага, входим в функцию.
20 Тааак, n = 10.
30 k = n (k = 10).
40 k++ (11).
50 n = k (n = 11).
60 Если n != 20 рекурсивный вызов с параметром 11. Вход в функцию. n = 10. k (== 11) = 10... Чёрт, что-то не то..... GOTO 10
Хреново, не правда ли?
1
1182 / 467 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
02.12.2010, 21:18  [ТС] 7
silent_1991, да,но конец проги виден
0
Эксперт С++
5036 / 3096 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
02.12.2010, 21:20 8
^Tecktonik_KiLLeR, кому виден? Если вы видите буёк и плывёте к нему, но вас постоянно волной назад отбрасывает, вы сможете дотронуться до буйка?
0
В астрале
Эксперт С++
8022 / 4779 / 654
Регистрация: 24.06.2010
Сообщений: 10,547
02.12.2010, 21:33 9
Простая рекурсия. Код из темы https://www.cyberforum.ru/cpp-... page3.html.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
   static int val = 1;
   while(val /* vanish */ --> 0)
   {
      (++ /* do black magic ! */  val) /* very black magic !!! */ ++;
      (val == 2 ? printf("WTF ??!") : val =- 1);
   }
 
   if(val<-15)
           return ((1<0?/* magic */100500:500?233?33?321?2223?0:0:0:0:0:0));
 
   return ((!!val==!!false)?val ==- 100500?5:1:main());
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2010, 21:33

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

Переписать данные из файла в новый файл, отбросив самый большой и самый маленький результат
Файл содержит данные о результатах 25 экспериментальных измерений. Переписать их в новый файл,...

В заданной матрице найти самый большой отрицательный элемент и самый маленький положительный и вывести их на экран
Помогите пожалуйста с заданиями) Задание 1: Напишите программу, которая создает двухмерный массив...

Определить, кто указан в списке раньше: самый старший или самый младший; в чем ошибка?
Сама задача:Известен возраст группы людей в списке из 20 человек. Какой человек указан в списке...

Составить файл об информаций студентов в группе. Найти самый высокий и самый низкий уровень успеваемости студентов в группе
блииин ничего непонела !!на языки С нужно написать программу на тему ввод и ввывод файловых...

В массиве X найти самый большой элемент и вывести его и его номер на экран, в массиве Y - самый маленький
С помощью датчика случайных чисел сформировать два массива X и Y размерностью 100 и 200 чисел в...

Самый простой компилятор
В чём ошибка? Компилятор выдаёт ошибку. #include &lt;iostream&gt; using namespace std; using...


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

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

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