veronica b
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору GOGACL, я немножко подправил вашу программу, так ка в ней была принципиальная ошибка Цитата: Цитата: #include <iostream.h> int mys(int, int); int main() { int a, b; cout << "Enter 2 numders: "; cin >>a >> b; cout << "Result equals " << mys(a, b) << endl; return 0; } int mys(int x, int y) { if(y <= 1) // A return x; else return x + mys(x, y-1); // B } | Самая важная строка в этой программе, это строка помеченаая В. В ней опять вызывается функция mys(int, int), но тут есть маленькая тонкость, второй аргумент уменшается на единицу.. Теперь смотрим строку, помеченой буквой А. Если второй аргумент меньше или равен 1, то нет вызова mys(int, int).Рекурсия закончилась. В исходной программе, при втором аргументе, имеющим отр.знач. рекурсия была бы бесконечной! В общем, в языке С и С++ не свойственно применение рекурсии. Если вам нравится рекурсия, то используйте Lisp и Prolog. |