Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    aiuto funzione ricorsiva in c

    scusate a da poco che sto iniziando a studiare c mi servirebbe un aiuto su un esercizio che inserito da input un numero n esegua la somma dei primi n elementi dispari ho provato cosi caso base n <= 0 return 1 altrimenti se n>0
    ad esempio inserendo 5 devo sommare 1+3+5+7+9=25 che è uguale a 5*5

    #include<stdio.h>
    int sum(int n,int x)
    {
    if(n<=0)
    return 1;
    else return n* sum(n-1,x);
    }

    int main()
    {
    int x; int y;
    printf("inserire un intero N: ");
    scanf("%d", &x);
    printf("La somma è :%d",sum(x));
    return 0;
    }

  2. #2

    Re: aiuto funzione ricorsiva in c

    Originariamente inviato da Alex_ken
    int sum(int n,int x)
    {
    if(n<=0)
    return 1;
    else return n* sum(n-1,x);
    }
    Così calcoli il prodotto dei primi n numeri. E poi x a cosa ti serve?

    Curiosamente, la somma dei primi n numeri dispari equivale alla somma di n per se stesso, esattamente n volte, quindi hai diverse strade per implementare la cosa.

  3. #3

    cosi potrebbe andare quali sono gli errori

    #include<stdio.h>
    int sum(int n)
    {
    if(n<=0)
    return 1;
    else return n+ sum(n);
    }

    int main()
    {
    int x;
    printf("inserire un intero N: ");
    scanf("%d", &x);
    printf("La somma è :%d",sum(x));
    return 0;
    }

  4. #4

    Re: cosi potrebbe andare quali sono gli errori

    Originariamente inviato da Alex_ken
    int sum(int n)
    {
    if(n<=0)
    return 1;
    else return n+ sum(n);
    }
    No..questa funzione va in loop infinito..

  5. #5
    #include<stdio.h>
    int sum(int n)
    {
    if(n<=0)
    return 1;
    else return ((n*2)-1)+ sum(n-2);
    }

    int main()
    {
    int x;
    printf("inserire un intero N: ");
    scanf("%d", &x);
    printf("La somma è :%d",sum(x));
    return 0;
    }


    cosi gira ma restituisce una somma in piu di uno xk supponendo che inserisci un numero 5 devo stampare la somma dei primi n dispari cioè 1+3+5+7+9=25 cioè 5*5= 10-1 =9
    poi 9 essendo un numero dispari somma gli n-2 solo che si ferma ad esempio a 9+7

  6. #6
    Originariamente inviato da Alex_ken
    int sum(int n)
    {
    if(n<=0)
    return 1;
    else return ((n*2)-1)+ sum(n-2);
    }
    La funzione non è ben definita.
    codice:
    int somma(int n) {
            if( n == 1 )
                return 1;
            return n*2-1 + somma(n-1);
    }

  7. #7
    ok grazie mille adesso gira

  8. #8
    scusate ho un altro esercizio del tutto diverso che mi da lo stesso tipo di errore
    segmentation fault
    L'esercizio mi chiede che, dato un array a e la sua lunghezza len, scrive il valore del
    massimo e del minimo elemento di a nelle celle puntate da min e max.
    Scrivere un programma che utilizzi rand() per la generazione di un
    array di 10 elementi interi casuali in [0,100] e provare le funzione
    stampando il valore del minimo e il suo indirizzo.




    void minmax(int a[], int len, int *min, int *max)
    {
    int i;

    for (i=1; i<len; i++){
    {
    if (a[i] <min) min=a[i];
    else max=a[i];
    }
    *min=min;
    *max=max;
    }


    int main()
    {
    int a[10];
    int min=a[0];
    int max=a[0];

    srand(time(NULL));

    for (i=0; i< 10; i++)
    a[i] = rand()%100;

    minmax(a,10,&min,&max);
    printf("L'indice del minimo a %d\n",min);
    printf("L'indirizzo del minimo a %p\n",&min);

    return 0;
    }

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303

    Moderazione

    Hai già aperto una discussione sul nuovo argomento (peraltro, senza rispettare quanto scritto nel regolamento).

    Non è questo il modo di condurre le discussioni sul forum: ciascuna discussione ha un argomento preciso (dettato dal titolo) e in quella discussione ci si attiene all'argomento, senza divagazioni.

    Qui si sta parlando di "funzione ricorsiva in c" e si parla solo di questo.

    Consiglio una lettura del Regolamento interno.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.