Одна из первых рекурсии !! Правда безконечная !
Может где ошибаюсь но по моему так :
char Story () {
cout << "У попа была собака он её любил \n
она съела кусок мяса он её убил \n
и под камень положил \n
а на камне написал \n" << Story () ;
return'\n' ;
}
ЁЛ>char Story () {
ЁЛ> cout << "У попа была собака он её любил \n
ЁЛ> она съела кусок мяса он её убил \n
ЁЛ> и под камень положил \n
ЁЛ> а на камне написал \n" << Story () ;
ЁЛ> return'\n' ;
ЁЛ>}
В данном случае мы стремительно получим переполнение стека, не увидев ни единого слова.
Угадайте, почему?
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, ё-лка, Вы писали:
К>В данном случае мы стремительно получим переполнение стека, не увидев ни единого слова. К>Угадайте, почему? К>
Я догадываюсь почему ты так подумал но ты не прав !!!
Откомпилировано и прогнано VC 7.0 всё прекрасно работает не вылитае даже через 10 минут
Здравствуйте, ё-лка, Вы писали:
ЁЛ>Я догадываюсь почему ты так подумал но ты не прав !!! ЁЛ>Откомпилировано и прогнано VC 7.0 всё прекрасно работает не вылитае даже через 10 минут
ЁЛ>всё таки iostream -- рулит )
И напротив, откомпилировано и прогнано VC7.1 — и не работает
129254 вложенных вызова без единой строчки наружу.
И я знаю почему. И почему я прав.
А покажи-ка твою main()... сдаётся мне, что ты попросту не вызываешь Story().
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, ё-лка, Вы писали:
ЁЛ>>Я догадываюсь почему ты так подумал но ты не прав !!! ЁЛ>>Откомпилировано и прогнано VC 7.0 всё прекрасно работает не вылитае даже через 10 минут
ЁЛ>>всё таки iostream -- рулит )
К>И напротив, откомпилировано и прогнано VC7.1 — и не работает К>129254 вложенных вызова без единой строчки наружу. К>И я знаю почему. И почему я прав.
К>А покажи-ка твою main()... сдаётся мне, что ты попросту не вызываешь Story().
Вот Работает без проблем и в Дебаг и в релиз версиях ))
#include <iostream>
using namespace std ;
char Sobaka () {
cout << "У попа была собака он её любил \nона съела кусок мяса он её убил \nи под камень положил \n а на камне написал \n" << Sobaka() ;
return'\n' ;
}
int main () {
Sobaka () ;
return 0 ;
}
Здравствуйте, Fomka, Вы писали:
F>Здравствуйте, ё-лка, Вы писали:
К>>>А покажи-ка твою main()... сдаётся мне, что ты попросту не вызываешь Story(). F>
ЁЛ>>include <iostream>
ЁЛ>>using namespace std ;
ЁЛ>>char Sobaka () {
ЁЛ>> cout << "У попа была собака он её любил \nона съела кусок мяса он её убил \nи под камень положил \n а на камне написал \n" << Sobaka() ;
ЁЛ>> return'\n' ;
ЁЛ>>}
ЁЛ>>int main () {
ЁЛ>> Sobaka () ;
ЁЛ>> return 0 ;
ЁЛ>>
ЁЛ>>
F>Вот видишь, Story() ты не вызываешь!
И в правду не вызываю! видать в том то и дело )
Попробую ф-цию Story() назвать может тога вылетет
Вообще странно написано, imho — зачем функции возвращать одинокий перевод строки?
я б писал как-нить так:
#include <iostream>
#include <string>
using namespace std;
string Sobaka() {
string msg( "У попа была собака он её любил\nона съела кусок мяса он её убил\nи под камень положил\n а на камне написал\n" );
return msg + Sobaka();
}
int main() {
cout << Sobaka();
}
Правда все равно segfault
А вот так работать будет всегда, как мне кажецца :
void Sobaka() {
cout << "У попа была собака он её любил\nона съела кусок мяса он её убил\nи под камень положил\n а на камне написал\n";
Sobaka();
}
int main() {
Sobaka();
}
ЁЛ>>char Story () {
ЁЛ>> cout << "У попа была собака он её любил \n
ЁЛ>> а на камне написал \n" << Story () ;
ЁЛ>> return'\n' ;
ЁЛ>>}
К>В данном случае мы стремительно получим переполнение стека, не увидев ни единого слова. К>Угадайте, почему? К>
Порядок расчета аргументов зависит от компилятора. Раскрывается варажение так:
ЁЛ>char Story () {
ЁЛ> cout << "У попа была собака он её любил \n
ЁЛ> она съела кусок мяса он её убил \n
ЁЛ> и под камень положил \n
ЁЛ> а на камне написал \n" << Story () ;
ЁЛ> return'\n' ;
ЁЛ>}
А зачем return '\n', если он всё равно никогда не будет исполнен?
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, Древлянин, Вы писали:
Д>>А зачем return '\n', если он всё равно никогда не будет исполнен?
К>Важен не предмет, а внимание. Чтобы функция была "правильной" — возвращала хоть что-то.
Ну всё это так сказать для красоты было так как написоно написано а не так хотябы
Здравствуйте, ё-лка, Вы писали:
ЁЛ>Одна из первых рекурсии !! Правда безконечная ! ЁЛ>Может где ошибаюсь но по моему так :
ЁЛ>
ЁЛ>char Story () {
ЁЛ> cout << "У попа была собака он её любил \n
ЁЛ> она съела кусок мяса он её убил \n
ЁЛ> и под камень положил \n
ЁЛ> а на камне написал \n" << Story () ;
ЁЛ> return'\n' ;
ЁЛ>}
Возможно, буфер лучше флюшить? Хотя бы endl() вместо последнего '\n'?