Основно съдържание
Компютърни науки
Курс: Компютърни науки > Раздел 1
Урок 6: Рекурентни алгоритми- Рекурсия
- Функцията факториел
- Предизвикателство: Итеративен факториел
- Рекурсивен факториел
- Предизвикателство: Рекурсивен факториел
- Свойсва на рекурентни алгоритми
- Приложение на рекурсия за определяне дали една дума е палиндром
- Предизвикателство: Проверка дали един стринг е палиндром
- Изчисляване на степени на числа
- Предизвикателство: Рекурентни сили
- Запълване на Серпински
- Проект: Рекурентно изкуство
© 2023 Khan AcademyУсловия за ползванеДекларация за поверителностПолитика за Бисквитки
Изчисляване на степени на числа
Въпреки че в JavaScript има вградена функция
pow
, която изчислява степента на някакво число, можеш да напишеш рекурентно подобна функция, която да е много ефективна. Единствената уловка е, че степенният показател трябва да бъде цяло число.Да предположим, че искаш да изчислиш x, start superscript, n, end superscript, където x е всяко реално число, а n е всяко цяло число. Лесно е, ако n е 0, тъй като x, start superscript, 0, end superscript, equals, 1 без значение колко е x. Това е добър основен случай.
Да видим какво се случва, когато n е положително. Да започнем, като си припомним, че, когато умножаваш степените на x, събираш степенните показатели: x, start superscript, a, end superscript, dot, x, start superscript, b, end superscript, equals, x, start superscript, a, plus, b, end superscript за всяка основа x и всеки степенен показател a и b. Следователно, ако n е положително и четно число, тогава x, start superscript, n, end superscript, equals, x, start superscript, n, slash, 2, end superscript, dot, x, start superscript, n, slash, 2, end superscript. Ако искаш да изчислиш y, equals, x, start superscript, n, slash, 2, end superscript рекурентно, тогава можеш да изчислиш x, start superscript, n, end superscript като y, dot, y. Ами ако n е положително и нечетно число? Тогава x, start superscript, n, end superscript, equals, x, start superscript, n, minus, 1, end superscript, dot, x, а n, minus, 1 е 0 или положително и четно. Току що видяхме как да изчислим степените на x, когато степенният показател е 0 или положително четно число. Следователно можеш да изчислиш рекурентно x, start superscript, n, minus, 1, end superscript, а след това да използваш резултата, за да изчислиш x, start superscript, n, end superscript, equals, x, start superscript, n, minus, 1, end superscript, dot, x.
Ами ако n е отрицателно? Тогава x, start superscript, n, end superscript, equals, 1, slash, x, start superscript, minus, n, end superscript и степенният показател minus, n е положителен, тъй като е отрицание на отрицателно число. Така че можеш да изчислиш x, start superscript, minus, n, end superscript рекурентно и да вземеш реципрочното му число.
Като вземем предвид тези неща, получаваме следния рекурсивен алгоритъм за изчисляването на x, start superscript, n, end superscript:
- Основният случай е, когато n, equals, 0, а x, start superscript, 0, end superscript, equals, 1.
- Ако n е положително и четно число, изчисляваме рекурентно y, equals, x, start superscript, n, slash, 2, end superscript, а след това x, start superscript, n, end superscript, equals, y, dot, y. Забележи, че в този случай можеш да се измъкнеш само с едно рекурентно извикване, като изчислиш x, start superscript, n, slash, 2, end superscript само веднъж, а след това да умножиш резултата от това рекурентно извикване по него самия.
- Ако n е положително нечетно число, изчисляваме рекурентно x, start superscript, n, minus, 1, end superscript, а степенният показател е 0 или положително четно число. Тогава x, start superscript, n, end superscript, equals, x, start superscript, n, minus, 1, end superscript, dot, x.
- Ако n е отрицателно, изчисляваме рекурентно x, start superscript, minus, n, end superscript, за да може степенният показател да стане положителен. Тогава x, start superscript, n, end superscript, equals, 1, slash, x, start superscript, minus, n, end superscript.
Това съдържание е резултат от съвместната дейност на преподавателите по Компютърни науки в Дартмут Thomas Cormen и Devin Balkcom, както и на екипа по компютърни науки на Кан Академия. Съдържанието е лицензирано CC-BY-NC-SA.
Искаш ли да се присъединиш към разговора?
Все още няма публикации.