Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

AlexanderPetkov27 avatar AlexanderPetkov27 1 Точки

въпрос относно рекурсия

Здравейте, 

дали някой ще може да ми обясни как точно се случва връщането на числата от масива отзад напред, след като вече сме достигнали base case-a. Не вдявам как точо index намалява след като достигне 5.

Благодаря предваритено

 

https://pastebin.com/Q77NDXwj

Тагове:
0
Advanced Level: Back-End
Quake3 avatar Quake3 546 Точки

Здравей,

Нали рекурсивно викаме Sum, докато индексът не стане равен на дължината на масива. След това започваме да се връщаме през всяка една извикана функция.

Ако направим нещо като диаграма, ще изглежда така:

1-ви Sum с int index = 0  (локален за метода)

.. вика 2-ри Sum с int index = 1 (локален за метода)

.....вика 3-ти Sum с int index = 2 (локален за метода)

....

Стигаме 5. и започваме да се връщаме, като първият ред, който ще се изпълни след:

var current=arr[index] + Sum(arr, index + 1);  <--- тук ни връща return 0;

ще бъде:

Console.WriteLine("after recursion + "+index);

Тъй като index не е указател (ref index), а int, то всеки отделен метод(функция) пази свой си локален index в паметта. Затова и при печат виждаме индекс 4 (за 5-тият Sum), индкес 3 за четвърия Sum, 2 за третия и т.н.

П.П. ето и един пример с и без указател като параметър

1
11/05/2018 23:07:56
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.