Рекурсивный алгоритм и его примеры

Есть два ядро ​​рекурсивного алгоритма:

1. условие окончания рекурсивного рекурсивное значение функции возврата и наличие или отсутствие функции установки типа возвращаемого рекурсивно определяет условие завершения
2. подзадач разложенных

Примеры 1-- башня проблемы Ханой

1 #include <iostream>
 2 с  использованием  пространства имен STD;
3  недействительными Ханой ( INT п, символ А, символ B, символ С) {
 4 ,      если (п == 1 ) соиЬ << " MOVE верхний диск из    " << А << "    к    " << C << епсИ;
5      еще {
 6          Ханой (n - 1 , А, С, В);
-          СоиЬ << « MOVE верхнего диска из    » << А << "C << << епсИ;
 . 8          Ханой (N - 1. , В, А, С);
 . 9      }           
 10  } 
 . 11  INT основных () {
 12      INT н-; // Башни Ханоя масштаба 
13      COUT << " Enter Башня Ханоя ваш масштаб: " << ENDL;
 14      это время ( 1 ) {
 15          CIN >> n-;
 16          IF (п < 1 ) соиЬ << " ! Пожалуйста , проверьте введенные данные " << Endl;
 17          в остальное  BREAK ; 
 18      }
. 19      символ A, B, C,
 20      COUT << " Пожалуйста , введите имя три цилиндра: " << епсИ;
 21      CIN >> A >> B >> C; 
 22 является      Ханой (н-, A, B, C); // вызов функции для решения 
23      возвращения  0 ;
 24- }

Примеры массива и 2-- рекурсивное решение

. 1 #include <iostream>
 2  от употребления  имен STD;
 3.  INT GetSum ( INT н-, INT * А) { // п-есть число элементов 
4.      ЕСЛИ (п - == 1. ) Вернуться А [ 0 ];
 5.      Остальное  возвращают GetSum ( N - 1. , а) + а [N - 1. ];
 . 6  }
 . 7  INT основных () {
 8.      INT размер; // размер этой проблемы, а именно желаемое количество элементов массива 
. 9      COUT << " Пожалуйста , введите вопрос размер: " << епсИ;
10      это время ( 1. ) {
 11.          CIN >> размер;
 12 является          IF (размер <= 0 ) << COUT " Пожалуйста , проверьте правильность шкалы " << епсИ;
 13 является          еще  BREAK ; 
 14      } 
 15      INT * P = новый новый  INT [размер ]; // динамический открытый массив 
16      COUT << " Пожалуйста , введите элементы массива в свою очередь: " << епсИ;
 17 .      для ( INT I = 0 ; I <размер, я ++ ) {
 18          CIN >> * (P +I);
 . 19      }
 20      COUT << " предоставляется каждый элемент массива и: " << епсИ << GetSum (размер, Р);
 21      возвращает  0 ;
 22 }

Пример 3-- максимального массива рекурсивное решение

. 1 #include <iostream>
 2 #include <math.h> 
 3.  Что используя  пространство имен STD;
 . 4  INT getMax ( INT н-, INT * А) { // п-число элементов 
. 5      ЕСЛИ (п - == . 1 ) возвращают А [ 0 ];
 . 6      остальное  возвращение макс (getMax (N - 1. , а), [N - 1. ]);
 . 7  }
 . 8  INT основных () {
 9.      INT размер; // количество масштабов этой проблемы, то есть элементы 
10      COUT < < " Пожалуйста , введите масштаб проблемы:" << епсИ;
 . 11      это время ( 1. ) {
 12          CIN >> размер;
 13 является          IF (размер <= 0 ) << COUT " Пожалуйста , проверьте правильность шкалы " << End L , ;
 14          в еще  BREAK ; 
 15      } 
 16      INT * P = новый новый  INT [размер]; // динамический массив открыт 
17.      COUT << " Пожалуйста , введите элемент массива , в свою очередь: " << епсИ;
 18 является      для ( INT I = 0 ; I <размер, я ++ ) {
. 19          CIN >> * (P + I);
 20      }
 21 является      COUT << " Максимальное значение массива ввода: " << епсИ << getMax (размер, P);
 22      возвращают  0 ;
 23 }

 

рекомендация

отwww.cnblogs.com/TYXmax/p/10988860.html