Visualizzazione dei risultati da 1 a 10 su 10

Discussione: numeri pari somma

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232

    numeri pari somma

    mi è venuto un dubbio abbstanza banale... dato un numero n sommo i primi n numeri pari esempio: n = 2 somma =6.
    Se utilizzo il ciclo for fino a dove bisogna farlo scorrere?!...
    per testare il numero uso il modulo..!

  2. #2
    Non lo farei con un for, piuttosto con un while. Ma se proprio:

    codice:
    public class SumN
    {
        public static void main (String[] args)
        {
            int i = 0;
            int n = 2;
            int sum = 0;
            for (int count = 0; count < n; ) {
                if (++i % 2 == 0) {
                    sum += i;
                    count++;
                }
            }
            System.out.println ("Sum = " + sum);
        }
    }
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    fore come dici tu meglio il while... anche perchè nn capisco molto la leggibilità del for dato che l' ho imposto diversamente del tipo una cosa del tipo for(int i=0; i<cont; i++)


    Originariamente inviato da mxa
    Non lo farei con un for, piuttosto con un while. Ma se proprio:

    codice:
        public static void main (String[] args)
        {
            int i = 0;
            int n = 2;
            int sum = 0;
            for (int count = 0; count < n; ) {
                if (++i % 2 == 0) {
                    sum += i;
                    count++;
    Forse con il while viene meglio anke per la leggibilità... cn il while tu come avresti proceduto?!

  4. #4
    un po' di sforzo potresti farlo anche tu pero', altrimenti non impari nulla di sicuro. Spero almeno di non starti facendo i compiti

    codice:
    public class SumN
    {
        public static void main (String[] args)
        {
            int n = 2;
            
            int sum = 0;
            int foundEvenNumbers = 0;
            int nextNumber = 2;
            while (foundEvenNumbers < n) {
                if (nextNumber % 2 == 0) {
                    sum += nextNumber;
                    foundEvenNumbers++;
                }
                nextNumber++;
            }
            System.out.println ("Sum = " + sum);
        }
    }
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    sorry

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Sempre con un for (che, per me, è la via più semplice):

    codice:
    int sum = 0;
    for(int i=0; i<n; i++) {
       sum += 2 * (i+1);
    }
    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

  7. #7
    Ancora meglio se ricorsivamente

    codice:
    	public int somma(int n){
    		if(n==0)
    			return n;
    		if(n%2==0)
    			return n+=somma(n-1);
    		
    		return somma(n-1);
    	}

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Originariamente inviato da VincenzoTheBest
    Ancora meglio se ricorsivamente

    codice:
    	public int somma(int n){
    		if(n==0)
    			return n;
    		if(n%2==0)
    			return n+=somma(n-1);
    		
    		return somma(n-1);
    	}
    5t4rdu5t chiedeva di ottenere, dato N, la somma dei primi N numeri pari, non la somma dei numeri pari tra 0 e N...

    Versione ricorsiva, solo come esercizio sulla ricorsione:

    codice:
       public int somma(int n) {
          int ret = 0;
          if(n==0) {
             ret = 0;
          } else {
             ret = 2 * n + somma(n-1);
          }
          return ret;
       }
    In questi casi, l'iterazione è sempre la via preferenziale.


    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Anche questa dovrebbe essere una soluzione no?

    codice:
    class Es {
      public static void main(String[] args) {
        int n = (args.length == 1) ? Integer.parseInt(args[0]) : 1;
        int res = 0;
    	
        for(int i=2; i<=n*2; i+=2) {
          res+=i;
        }
    	
        System.out.println("Somma: "+res);
      }
    }

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    Diciamo che l' esempio di mxa cn il while e qll di LeleFT sn molto ottimali anche come leggibilità anche se nel while ho fatto una piccola modifica. Utilizzo della ricorsione diciamo che ancora nn l' ho studiata xD ma è interessante lo stesso! grz di tutto!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.