Queria saber qual o raciocínio por trás do código abaixo. Eu entendi, eu acho, o que ele está fazendo, mas eu nunca teria pensado desse jeito, pois me parece totalmente contra intuitivo.
Problema:
Um fatorial exponencial é um inteiro positivo N elevado à potência de N-1, que por sua vez é elevado
à potência de N-2 e assim em diante. Ou seja, n ^ (n - 1) ^ (n - 2) ^ ...^ 1. Faça uma função recursiva que receba
um número inteiro positivo N e retorne o fatorial exponencial desse número.
Código que funciona, mas não entendi a lógica:
int fatExp(int n) {
int interna(int n, int k) {
if(k == 1) {
return n;
}
return interna(n * interna(n, k - 1), k - 1);
}
return interna(n, n - 1);
}
Código que eu fiz, mas não funciona:
int expoFat(int num) {
int intern(int n, int p) {
if(p == 1)
return n;
O que eu pensei foi o seguinte:
Se eu passar o número 4, que teria: 4^3^2^1. Para isso, eu, recursivamente formaria essa expressão. Note que eu mantenho o 4 na base, ali no "return (n*... " porque ele deveria ser o último a ser calculado. Bem, não funcionou.
Olhando o código que funciona eu vi que ele já vai multiplicando o 4 várias vezes, mas seguindo um raciocínio estranho. O que me desanima é que funciona, porque eu nunca teria pensado nessa solução.