G(9) = 9! = 362880
Объяснение:
Из условия задачи видно, что функция G рекурсивная, с условием завершения рекурсии при G(1) = 1
Тогда найдём значение при n = 9
Для удобства я буду обозначать -> как вхождение в рекурсию:
G(9) = G(8) * 9 -> G(7) *8 -> G(6) * 7 -> G(5) * 6 -> G(4) * 5 -> G(3) * 4 -> G(2) * 3 -> G(1) * 2 -> G(1) - это последовательность вызовов данной рекурсии, вглядевшись в которую можно увидеть факториал, откуда
G(9) = 9! = 362880
Теперь же пройдёмся обратно по рекурсии, где -> обозначает выход из рекурсии
G(1) = 1 -> G(2) = 1 * 2 = 2 -> G(3) = 2 * 3 = 6 -> G(4) = 6 * 4 = 24 -> G(5) = 24 * 5 = 120 -> G(6) = 120 * 6 = 720 -> G(7) = 720 * 7 = 5040-> G(8) = 5040 * 8 = 40320 -> G(9) = 40320 * 9 = 362880
a=8
Объяснение:
идём по шагам:
1 Шаг a=5 b=7
2 Шаг проверяем b<10 или нет. Да меньше. Идём по стрелке ДА
3 Шаг проверяем a<= b у нас это 5<=7 Да меньше. Идём по стрелке ДА
4 Шаг увеличиваем а и b на единицу, становится a=5+1=6 b=7+1=8 возвращаемся по стрелке к шагу 2
5 Шаг проверяем 8<10 или нет. Да меньше. Идём по стрелке ДА
6 Шаг проверяем 6<=8 Да меньше. Идём по стрелке ДА
7 Шаг увеличиваем а и b на единицу, становится a=6+1=7 b=8+1=9 возвращаемся по стрелке к шагу 2
8 Шаг проверяем 9<10 или нет. Да меньше. Идём по стрелке ДА
9 Шаг проверяем 7<=9 Да меньше. Идём по стрелке ДА
10 Шаг увеличиваем а и b на единицу, становится a=7+1=8 b=9+1=10 возвращаемся по стрелке к шагу 2
11 Шаг проверяем 10<10 или нет. Нет. Идём по стрелке Нет. Выход из алгоритма. На этом этапе a=8
MOVWF FSR ; Косвенная регистровая адресация
CLRW
LADR_LOOP:
ADDWF FSR
INCF FSR,F
BTFSS FSR, 4
GOTO LOOP
XORWF FSR,W
RRF FSR, 3 ; Делим на 8
XORWF FSR,W