às cabeçadas com recorrencias em C

marzvolta

What is folding?
Boas, estou eu aqui a estudar para um teste de AED que vou ter na 3ª e estou a estudar funçoes recursivas, fazer uns exercicios e tal, e apareceram-me estes 2 problemas (basicos):
1. Write a function using Recursion to print numbers from n to 0.

2. Write a function using Recursion to print numbers from 0 to n. (You just need to shift one line in the program of problem 1.)

faço o 1º com facilidade:
---------------------------------------------------------------------------
#include <stdio.h>
#define N 10

int print(int n){

while(n>0){
printf("%d\n",n) ;
return print(n-1);
}
}
main()
{
print(N);

}
---------------------------------------------------------------------------
quanto ao 2º, por incrivel que pareça, nao consegui perceber a "dica" que dao no enunciado, a maneira que eu arranjei de o resolver foi:
---------------------------------------------------------------------------
#include <stdio.h>
#define N 10

int print(int n){

if(n<=N){
printf("%d\n",n) ;
return print(n+1);

}
}
main()
{
print(0);

}
---------------------------------------------------------------------------

alguem me poderia explicar aki ao burro a maneira ultra facil utilizando a "dica" que dao?
atenciosamente,
[]
 
Epa n te quero estar a enganar mas tanto quanto sei, n está correcto usares um while dado que tu por cada vez que chamas a função so precisas que ela imprima 1 vez, por isso aqui vai a minha solução, mas olha que eu n sou de fiar :D.

void print(int n){

if(n == 0){
printf("%d\n", n);
return;
}
else{
printf("%d\n", n);
print(n - 1);
return;
}
}

int main(){

print(N);
return 0
}


quanto a troca de linha axo que é:


void print(int n){

if(n == 0){
printf("%d\n", n);
return;
}
else{
print(n - 1); /* trocas esta linha com a linha abaixo para ele ir recursivamente imprimir o N por ordem crescente */
printf("%d\n", n);
return;
}
}

int main(){

print(N);
return 0
}


Espero ter ajudado, alguma duvida ja sabes [[[]]]
 
Back
Topo