Объяснение кода рекурсии - C (СИ)
Формулировка задачи:
Доброго времени суток! Есть такая рекурсия, вычисляет наибольший элемент:
Эта строчка непонятная:
Можете пошагово расписать что происходит в этой строчке?
Т.е. получается как бы так?
1) bigger (100,max(num[1],5) ) // но ведь bigger принимает 2 int аргумента bigger(int a, int b), что он примет за значение b?
2) bigger (100, max(num[2],4) )
3) bigger (500, max(num[3],3) )
4) bigger (500, max(num[4],2) )
5) bigger (500, max(num[5],1) )
6) bigger (500, max(num[6],0) )
возвращает 4200.
И возвращаемое return с функции bigger куда идет?
#include <stdio.h> int bigger(int a, int b){ if( a > b) return a; else return b; } int max(int* nums, int len){ if(len == 1){ return *nums; } else{ return bigger(*nums, max(nums + 1, len - 1)); } } int main(){ int nums[6] = {100, 1, 500, -20, 66, 4200}; int len = 6; printf("%d\n", max(nums, len)); return 0; }
return bigger(*nums, max(nums + 1, len - 1));
Идеи?
Решение задачи: «Объяснение кода рекурсии»
textual
Листинг программы
bigger(num[0], bigger(num[1], bigger(num[2], bigger(num[3], bigger(num[4], num[5])))));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д