Форум программистов, компьютерный форум CyberForum.ru

Принцип работы рекурсии - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Добавить в элементы список и вывести их на экран http://www.cyberforum.ru/cpp-beginners/thread656208.html
написала программу, которая добавляет в список элементы и должна их выводить на экран. функция, которая должна их выводить не работает. подскажите, в чем ошибка? #include <iostream> using namespace std; struct list { int data; list *next;
C++ auto Хочу сделать автомат. переменную auto int x; auto double f; Ругается. Как исправить? http://www.cyberforum.ru/cpp-beginners/thread656204.html
C++ Раздельная компиляция
Пусть есть программа, которая состоит из 2 файлов. 1 файл: основной, там где main 2 файл: содержит некоторые функции Также есть header. Я набираю текст программы в wordpad. Далее хочу скомпилировать оба файла, причём, так, чтобы в 1 можно было использовать функции из другого. Как это сделать? В командной строке пишу так: cl /EHsc file1.cpp file2.cpp
закрытие консоли C++
в чем допущена оплошность:требуется ввести размер матрицы,вводим допустим 5,происходит вывод на экран,далее следует выбор: удалить одну строку(выбираем 1) либо удалить несколько( выбираем 2).допустим вводим 1.Следует вопрос "какую строку удалить".вводим к примеру 3....происходит выполнение ,но за доли секунды консоль закрывается,хоть есть "торможение" и system("PAUSE") было и getc(stdin) и тд....
C++ unsigned char максимум и минимум цикл http://www.cyberforum.ru/cpp-beginners/thread656183.html
Тут небольшая непонятка - выводятся пустые символы, это и есть максимальное и минимальное значение типа unsigned char? #include <iostream> using namespace std; int main() { //переменная для типов данных unsigned char f;
C++ Исправить ошибки в программе "Hello, World" в общем первая программа после hello world на С++ , помогите исправить апшибки пжл п.с. что за тупая система не дает создать тему со словом помогите о_О подробнее

Показать сообщение отдельно
botasa
3 / 3 / 0
Регистрация: 18.01.2011
Сообщений: 131
22.09.2012, 20:54     Принцип работы рекурсии
Искал в инете и в поиске, но никак не могу понять принцип работы рекурсии программно.
Допустим есть функция
C++
1
2
3
4
int f(int n) {
   if(0 == n) return 0;
   else return n % 10 + f(n / 10);
}
если переделать данную функцию
C++
1
2
3
4
5
6
7
static int i;
int f(int n) {
   i = n;
   cout << i << endl;
   if(0 == n) return 0;
   else return n % 10 + f(n / 10);
}
и вызвать ее f(100500);

то результат в консоли будет
100500
10050
1005
100
10
1
0
6 - конечный результат в точке вызова. То есть данная рекурсивная функция подсчитает суму цифр в числе. НО как именно оно работает я не понимаю при передачи xxx + f(n / 10) тут понятно, почему дальше будет вот такой результат :
100500
10050
1005
100
10
1

НО тут не понятно как работает n % 10 в этой функции и куда оно это все присваивает, что в конце будет цифра 6. И тоже самое в Фибоначчи return f(n - 1) + f(n - 2). Тут не понятно, что сперва вызовет f(n - 1) или f(n - 2), наверно на 2 части разобьется, как ТРЕУГОЛЬНИК в инете видел, но КАК оно потом это все в кучку слепит и в конце даст один результат, то же самое и из ФАКТОРИАЛОМ n * f(n - 1), f(n - 1) - это будет постоянно вызывать а когда и как оно будет на n эти вызовы перемножать ????

То что оно постоянно уходит в глубину и ест много ресурсов понятно, и когда достигнет определенного момента проверки, при которой даст FALSE тоже понятно, но как оно вернет назад результат умножит и другие действия сделается не понятно !!! Вот например в рекурсивный способ решения задачи на сортировку СЛИЯНИЯМ там вроде 2 рекурсии потом и тоже самое в ХАНОЙСКИХ башнях (в башнях вопше не понятно 1 или 2 или 3 строчка будет сперва и по каких правилах будет вызывать, понятно что сверху в низ, но как оно работает не понятно)

В инете нашел много теории и всякие мат. и другие задачи, но сам ПРИНЦИП работы рекурсии ПРОГРАММНО не увидел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru