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

Какое число вернет foo(5)? - C++

Восстановить пароль Регистрация
 
AnalDesperation
Сообщений: n/a
05.07.2013, 01:13     Какое число вернет foo(5)? #1
C++
1
2
3
4
5
int foo (int n) {
   if (n <= 0)
       return 0;
   return foo (n - 2) + foo (n / 2) + 1;
}
Вставляю код, выполняю с нужным параметром и все хорошо, ответ найден и равен 6. Но на тесте вместо компилятора будет листочек и ручка. Подскажите пожалуйста, как это вообще можно посчитать вручную? Или как удобней всего будет изобразить это на бумаге, чтобы не запутаться, а то уже несколько раз пытался нарисовать, но всякий раз выходит что-то не то.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2013, 01:13     Какое число вернет foo(5)?
Посмотрите здесь:

Как запомнить какое-то число? C++
C++ Какое значение вернет функция system, если задана неверная команда
C++ Какое число встречается в последовательности раньше
C++ Foo::foo(): x(dx), y(dy) {}; Зачем
C++ Определить какое число
C++ Какое число встретится раньше
Какое число будет через n дней C++
C++ Какое значение вернет программа операционной системе?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
05.07.2013, 01:25     Какое число вернет foo(5)? #2
AnalDesperation на бумаге рисуй как-бы лес вызовов. А текстом - так:
Код
Вызываем Foo(5). 5>0, то Foo(5) = Foo(3) + Foo(2) + 1;
     Вызываем Foo(3). 3>0, то Foo(3) = Foo(1) + Foo(1) + 1;
       Вызываем два раза Foo(1). 1>0, то Foo(1) = Foo(-1) + Foo(0) + 1;
        Вызываем Foo(-1). -1<0, то Foo(-1) = 0.
        Вызываем Foo(0). 0==0, то Foo(0) = 0.
       Foo(1) = 0 + 0 + 1 = 1;
     Foo(3) = Foo(1) + Foo(1) + 1 = 1 + 1 + 1 = 3;
    Вызываем Foo(2). 2>0, то Foo(2) = Foo(0) + Foo(1) + 1;
     Вызываем Foo(0). 0=0, то Foo(0) = 0;
     Вызываем Foo(1). 1>0, то Foo(1) = Foo(-1) + Foo(0) + 1;
       Вызываем Foo(-1). -1<0, то Foo(-1) = 0.
       Вызываем Foo(0). 0==0, то Foo(0) = 0.
     Foo(1) = 0 + 0 + 1 = 1;
И т.д.
Yandex
Объявления
05.07.2013, 01:25     Какое число вернет foo(5)?
Ответ Создать тему
Опции темы

Текущее время: 13:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru