If you're seeing this message, it means we're having trouble loading external resources on our website.

Ако си зад уеб филтър, моля, увери се, че домейните *. kastatic.org и *. kasandbox.org са разрешени.

Основно съдържание

Изчисляване на степени на числа

Въпреки че в 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.

Искаш ли да се присъединиш към разговора?

Все още няма публикации.
Разбираш ли английски? Натисни тук, за да видиш още дискусии в английския сайт на Кан Академия.