Объяснение кода рекурсии - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Есть такая рекурсия, вычисляет наибольший элемент:
Листинг программы
  1. #include <stdio.h>
  2. int bigger(int a, int b){
  3. if( a > b)
  4. return a;
  5. else
  6. return b;
  7. }
  8. int max(int* nums, int len){
  9. if(len == 1){
  10. return *nums;
  11. } else{
  12. return bigger(*nums, max(nums + 1, len - 1));
  13. }
  14. }
  15. int main(){
  16. int nums[6] = {100, 1, 500, -20, 66, 4200};
  17. int len = 6;
  18. printf("%d\n", max(nums, len));
  19. return 0;
  20. }
Эта строчка непонятная:
Листинг программы
  1. return bigger(*nums, max(nums + 1, len - 1));
Можете пошагово расписать что происходит в этой строчке? Т.е. получается как бы так? 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 куда идет?
Идеи?

Решение задачи: «Объяснение кода рекурсии»

textual
Листинг программы
  1. bigger(num[0], bigger(num[1], bigger(num[2], bigger(num[3], bigger(num[4], num[5])))));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы