2012-01-12 3 views
2

Извините, я не мог придумать хороший заголовок.Расчет с помощью алгоритма

Я работаю на упражнения, связанные с ИКТ и прийти через это:

alg a(n) Вычислить и alg b(n) при п = 1,2,3,4 и 5

(a) 
    alg_a(n):result 
    if n > 1 then 
    return(alg_a(n−1)+alg_a(n−1)) 
    else return(1) 

(b) 
    alg_b(n):result 
    if n > 1 then 
    return(2 · alg_b(n−1)) 
    else return(1) 

На первом, что делает код в строке 1 do (alg_a(n):result)?

A: Вопрос просит меня вычислить alg a (n), поэтому скажем, что я вставляю 1, if n > 1 --> no --> return 1. Но что происходит, когда я вставляю п = 2.

Любой помощь ценится,

спасибо!

+0

Какой (программирующий) язык это? Добавьте этот тег к вопросу =) – jadarnel27

+0

Поскольку эти функции являются рекурсивными, как только у вас есть решение для n = 1, вы можете использовать его для вычисления результата для n = 2. И так далее, для n = 3, 4, 5 ... –

+0

Я понятия не имею, какой язык программирования это. Большинство вопросов написано в псевдокоде. – Jef

ответ

6

Алгоритм alg_a (n) вычисляет 2^(n-1) и alg_b (n) делает то же самое.
Theese recursive функции. Например, для 4 alg_a возвращается:
alg_a (4) =
alg_a (3) + alg_a (3) =
alg_a (2) + alg_a (2) + alg_a (2) + alg_a (2) =
alg_a (1) + alg_a (1) + alg_a (1) + alg_a (1) + alg_a (1) + alg_a (1) + alg_a (1) + alg_a (1) = 8

+0

Спасибо, что ваша помощь приветствуется! – Jef

3

Это не код , это какая-то форма псевдокода. Результат работы означает только то, что последует результат функции. Итак, alg_a(1) дает вам результат 1, тогда как alg_a(2) дает вам результат (alg_a(1) + alg_a(1)), то есть 2. Продолжайте получать другие ответы.

Вопрос в этом случае не требует ничего более сложного, чем числовые ответы.

+0

Спасибо, что ваша помощь приветствуется! – Jef

+0

'1 = 1' ' 2 = 1 * 1 + 1 * 1 = 2' '3 = 2 * 2 + 2 * 2 = 4' ' 4 = 4 * 3 + 4 * 3 = 24' ' 5 = 24 * 4 + 24 * 4 = 192' Это правильно? – Jef

Смежные вопросы