Объяснение кода рекурсии - 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])))));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д