Не могу понять, что происходит, когда я запускаю этот код - PullRequest
0 голосов
/ 15 октября 2019

Я не могу понять, почему результат процедуры effe (10) равен 110. (Это код, взятый из упражнения)

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

int effe(int);
int gi(int);

int main(){
    int test = effe(10);
    printf("%d\n", test); //this prints 110
    system("pause");
    return 0;
}

int effe(int a){
    if(a < 2)
    return a * 2;
    else
    return (gi(a - 1) + gi(a - 2));
}

int gi(int a){
    if (a < 2)
    return effe(a);
    else
    return (effe(a - 1) + effe(a - 2));
}

1 Ответ

0 голосов
/ 15 октября 2019

В некоторой степени это изменение Фибоначчи.

Рассчитать значения, начиная с efff (0), gi (0), и вычислить efff (1), gi (1), efff (2), gi (2), пока вы не достигнете efff (10), gi (10)

a    efff(a)    gi(a)
0    0           0
1    2           2
2    2=2+0       2=2+0
3    4=2+2       4=2+2
4    6=2+4       6=2+4
5    10=4+6      10=4+6
6    16=6+10     16=6+10
7    26          26
8    42          42
9    68          68
10   110         110

Обратите внимание, что каждый элемент в 2 раза больше значения Фибоначчи (1,1,2,3,5,8,13,21,34,55).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...