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

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

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

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

Въпреки че в JavaScript има вградена функция pow, която изчислява степента на някакво число, можеш да напишеш рекурентно подобна функция, която да е много ефективна. Единствената уловка е, че степенният показател трябва да бъде цяло число.
Да предположим, че искаш да изчислиш xn, където x е всяко реално число, а n е всяко цяло число. Лесно е, ако n е 0, тъй като x0=1 без значение колко е x. Това е добър основен случай.
Да видим какво се случва, когато n е положително. Да започнем, като си припомним, че, когато умножаваш степените на x, събираш степенните показатели: xaxb=xa+b за всяка основа x и всеки степенен показател a и b. Следователно, ако n е положително и четно число, тогава xn=xn/2xn/2. Ако искаш да изчислиш y=xn/2 рекурентно, тогава можеш да изчислиш xn като yy. Ами ако n е положително и нечетно число? Тогава xn=xn1x, а n1 е 0 или положително и четно. Току що видяхме как да изчислим степените на x, когато степенният показател е 0 или положително четно число. Следователно можеш да изчислиш рекурентно xn1, а след това да използваш резултата, за да изчислиш xn=xn1x.
Ами ако n е отрицателно? Тогава xn=1/xn и степенният показател n е положителен, тъй като е отрицание на отрицателно число. Така че можеш да изчислиш xn рекурентно и да вземеш реципрочното му число.
Като вземем предвид тези неща, получаваме следния рекурсивен алгоритъм за изчисляването на xn:
  • Основният случай е, когато n=0, а x0=1.
  • Ако n е положително и четно число, изчисляваме рекурентно y=xn/2, а след това xn=yy. Забележи, че в този случай можеш да се измъкнеш само с едно рекурентно извикване, като изчислиш xn/2 само веднъж, а след това да умножиш резултата от това рекурентно извикване по него самия.
  • Ако n е положително нечетно число, изчисляваме рекурентно xn1, а степенният показател е 0 или положително четно число. Тогава xn=xn1x.
  • Ако n е отрицателно, изчисляваме рекурентно xn, за да може степенният показател да стане положителен. Тогава xn=1/xn.

Това съдържание е резултат от съвместната дейност на преподавателите по Компютърни науки в Дартмут Thomas Cormen и Devin Balkcom, както и на екипа по компютърни науки на Кан Академия. Съдържанието е лицензирано CC-BY-NC-SA.

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

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