1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

às cabeçadas com recorrencias em C

Discussão em 'Programação' iniciada por marzvolta, 24 de Outubro de 2004. (Respostas: 2; Visualizações: 525)

  1. marzvolta

    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,
    []
     
  2. diablos

    diablos Power Member

    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 [[[]]]
     
  3. marzvolta

    marzvolta What is folding?

    hmmm indeed, obrigado,
    estou um bocado a nora com funçoes recursivas..so mm a factorial :x2:
    if ( n == 0) return 1;

    return fact(n-1)*n
    :x2: :x2:
     

Partilhar esta Página