Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Рекурентна формула за НОД

Всичко, което си няма категория

Рекурентна формула за НОД

Мнениеот bystro » 14 Фев 2020, 12:57

Здравейте,

Започнах да чета една книга по алгоритми. Стигнах до част със фактуриел и рекурентни функции.

Едната задача беше да се предложи рекурентна формула за повдигане на x в степен y (x[tex]\epsilon[/tex]R, y[tex]\epsilon[/tex]N).
Тази я реших по следния начин:

[tex]p(x^{y})=\begin{cases} x,y = 1 \\ p(x^{y-1}), y > 1\end{cases}[/tex]

Но задачата за рекурентна формула за намиране на най-големия общ делител на две естествени числа. Не мога да схвана как точно да напиша делението.

Бих се радвал и на обяснение, ако имате предложения.
bystro
Нов
 
Мнения: 1
Регистриран на: 14 Фев 2020, 12:48
Рейтинг: 0

Re: Рекурентна формула за НОД

Мнениеот Добромир Глухаров » 14 Фев 2020, 14:25

Задачата за степенуване може да се реши със следната рекурентна зависимост:

$x^n=p(x,n)=\begin{cases}1,&n=0\\x.p(x,n-1),&n>0\end{cases}$

Или с по-бързата за изпълнение (с по-малко стъпки):

$x^n=p(x,n)=\begin{cases}1,&n=0\\\left(p\left(x,\frac{n}{2}\right)\right)^2,&n-четно\\x.p(x,n-1),&n-нечетно\end{cases}$

където дали $n$ е четно или нечетно може да се провери например при програмиране на $C,C++,JavaScript$ чрез оценяване на Булевия израз $n\%2 == 0$ - ако е истина - четно, ако е лъжа - нечетно, или дори на по-краткия израз $n\%2$ -ако е лъжа - четно, ако е истина - нечетно.

А за най-голям общ делител може да се опита формулата (рекурентната зависимост):

$gcd(a,b)=\begin{cases}a,&b==0\\gcd(b,a\%b),&b>0\end{cases}$

Тук $a\%b$ е остатъкът при делене $a$ на $b$ - например $7\%4=3;\ 7\%3=1;\ 11\%7=4$
Аватар
Добромир Глухаров
Математик
 
Мнения: 2080
Регистриран на: 11 Яну 2010, 13:23
Рейтинг: 2178


Назад към Алгебра



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)