ПредишенСледващото

Това са две функции. Основната - основната функция на заявлението, факт - факторен функция. Факторен се изчислява цикличен функция факт призвание. Всъщност за първи път се нарича от основните, а след това до аргумента на функцията няма да бъде 1, той нарича себе си с намаляване на аргумента от 1. С една дума по някакъв начин. Между другото алгоритъма още няма аргументи и проверки не могат да се справят с аргументи по-малко от 1. - атом-22 август, 23 '15 в 13:39

Добре, а ако премине на факта, (2), получаваме, че функцията да не бъде ненужно raboat н-1 = 1 - user186578 23 август '15 в 13:43

@ User186578: защо не? ще го направя. - Ник Volynkin ♦ 23 август '15 в 13:44

За в бъдеще, когато задаване на въпрос, обясни по-подробно какво сте разбрали и че - все още не е това, което е направил, която очаквате да получите и какво се е случило, вместо. Аз препоръчвам да четете: Как да се задават въпроси. как да се създаде бързо, пълна и надеждна проба. - Ник Volynkin ♦ 25 август '15 в 05:15

Факторен на естествено число N - е продукт на всички цели числа от 1 до N включително.

Факториел 1 е равно на 1. Във всички други случаи факторен (N) е равна на факторните (N-1) * N.

В този пример, факт (междинно съединение п) - това е рекурсивна функция, то се нарича.

Например, програмата намира факториела на четири.

Как работи за рекурсивни повиквания:

Може би това ще стане ясно, ако го пренапише съвсем накратко

Всъщност () нарича себе си многократно, всеки път с аргумент от 1 е по-малко от неговото задействане, стига да не причинява аргумента, настроен на 1. В този случай, той се връща 1. В противен случай, той се връща в резултат на произведението от N, която връща факта (п - 1).

Всичко това е почти точно съответства на определението на факториел.

И в случай на рекурсивна функция масив R [] имплицитно организирана като функция действителност купчина активиране.

Що се отнася до изчисляването на факта, (п) стойност не е достатъчна, за да знаят факта, (п - 1). тогава очевидно ефективен алгоритъм е проста итерация, където на всеки етап от цикъла, ние ще трябва да се умножи факториела на стъпалата на контра-цикъл. В същото време проверка на допустимостта на входната величина (факторен е дефиниран за не-отрицателни числа) и преливник (т.е. дали друг междинен резултат се вписва в променлива от тип Int).

Ако грешките се върнат фалшив резултат: Overflow нула и редица по-малко от нула (невалиден самия аргумент) за отрицателен аргумент.

Отговорено 23 '15 август в 13:43

ПРОДАЖБА БЕЗ рекурсия:

ИЗПЪЛНЕНИЕ рекурсия:

Ако се вгледате внимателно, забележимо повторение код и в двете приложения: NUM * (factorialRecurses (бр - 1)); съответства на

Функцията призовава функция само по себе си, докато се изчерпи. Ако се вгледате в дебъгер, става ясно, че стека на извикване на функция в този момент е изпълнен. Достатъчно е да се припомни, организацията на стека. Функция -> функция изисква B -> С функция нарича -> D функция повиквания и т.н. Само в случай на рекурсия, се оказва, че една и съща функция нарича себе си многократно. След достигане на крайната точка - нула стека постепенно намалява Тя връща резултат се обадите на функцията, докато не е завършено "унищожаване".

отговорът е даден на 19 октомври в 15:21

Свързани статии

Подкрепете проекта - споделете линка, благодаря!