Рубрики

Практические вопросы для рекурсии | Набор 2

Объясните функциональность следующих функций.

Вопрос 1

/ * Предположим, что n больше или равно 1 * /

int fun1(int n)

{

  if(n == 1)

     return 0;

  else

     return 1 + fun1(n/2);

Ответ: функция рассчитывает и возвращает , Например, если n составляет от 8 до 15, тогда fun1 () возвращает 3. Если n составляет от 16 до 31, тогда fun1 () возвращает 4.

вопрос 2

/ * Предположим, что n больше или равно 0 * /

void fun2(int n)

{

  if(n == 0)

    return;

  

  fun2(n/2);

  printf("%d", n%2);

}  

Ответ: функция fun2 () выводит двоичный эквивалент n. Например, если n равно 21, тогда fun2 () печатает 10101.

Обратите внимание, что вышеперечисленные функции предназначены только для практики рекурсии, они не являются идеальной реализацией предоставляемых ими функций.

Пожалуйста, напишите комментарии, если вы найдете какие-либо ответы / коды неверны.

Рекомендуемые посты:

Практические вопросы для рекурсии | Набор 2

0.00 (0%) 0 votes