Não, a instrução return
vai encerrar a execução da função e retornar aquele valor para quem a chamou.
Você disse que n
e m
são 0
, certo?
Então em algum lugar você deve ter algum código assim:
int valor = x(0, 0); // a variável valor vai receber o valor retornado pela função x
Supondo que n = 4
e m = 2
, então sua função será chamada recursivamente, você pode fazer um teste de mesa, conforme abaixo para visualizar os valores:
n = 4
m = 2
x(4, 2)
verifica ( n é igual à m ) OU ( m é igual à 0 ) ? não
|
| x(n - 1, m)
| n = 4 - 1
| n = 3
| m = 2
| x(3, 2)
| verifica ( n é igual à m ) OU ( m é igual à 0 ) ? não
| |
| | x(n - 1, m)
| | n = 3 - 1
| | n = 2
| | m = 2
| | x(2, 2)
| | verifica ( n é igual à m ) OU ( m é igual à 0 ) ? sim
| | |
| | | return 1
| | |
| | x(2, 2) = 1
| |
| | +
| |
| | x(n - 1, m - 1)
| | n = 3 - 1
| | m = 2 - 1
| | n = 2
| | m = 1
| | x(2, 1)
| | verifica ( n é igual à m ) OU ( m é igual à 0 ) ? não
| | |
| | | x(n - 1, m)
| | | n = 2 - 1
| | | n = 1
| | | m = 1
| | | x(1, 1)
| | | verifica ( n é igual à m ) OU ( m é igual à 0 ) ? sim
| | | |
| | | | return 1
| | | |
| | | x(1, 1) = 1
| | |
| | | +
| | |
| | | x(n - 1, m - 1)
| | | n = 2 - 1
| | | m = 1 - 1
| | | n = 1
| | | m = 0
| | | x(1, 0)
| | | verifica ( n é igual à m ) OU ( m é igual à 0 ) ? sim
| | | |
| | | | return 1
| | | |
| | | x(1, 0) = 1
| | |
| | | return 1 + 1
| | |
| | x(2, 1) = 2
| |
| | return 1 + 2
| |
| x(3, 2) = 3
|
| +
|
| x(n - 1, m - 1)
| n = 4 - 1
| m = 2 - 1
| n = 3
| m = 1
| x(3, 1)
| verifica ( n é igual à m ) OU ( m é igual à 0 ) ? não
| |
| | x(n - 1, m)
| | n = 3 - 1
| | n = 2
| | m = 1
| | x(2, 1)
| | verifica ( n é igual à m ) OU ( m é igual à 0 ) ? não
| | |
| | | x(n - 1, m)
| | | n = 2 - 1
| | | n = 1
| | | m = 1
| | | x(1, 1)
| | | verifica ( n é igual à m ) OU ( m é igual à 0 ) ? sim
| | | |
| | | | return 1
| | | |
| | | x(1, 1) = 1
| | |
| | | +
| | |
| | | x(n - 1, m - 1)
| | | n = 2 - 1
| | | m = 1 - 1
| | | n = 1
| | | m = 0
| | | x(1, 0)
| | | verifica ( n é igual à m ) OU ( m é igual à 0 ) ? sim
| | | |
| | | | return 1
| | | |
| | | x(1, 0) = 1
| | |
| | | return 1 + 1
| | |
| | x(2, 1) = 2
| |
| | +
| |
| | x(n - 1, m - 1)
| | n = 3 - 1
| | m = 1 - 1
| | n = 2
| | m = 0
| | x(2, 0)
| | verifica ( n é igual à m ) OU ( m é igual à 0 ) ? sim
| | |
| | | return 1
| | |
| | x(2, 0) = 1
| |
| | return 2 + 1
| |
| x(3, 1) = 3
|
| return 3 + 3
|
x(4, 2) = 6