liczby trójkątne

0

cześć mam takie zadanie do zrobienia:

zad liczby ‘trójkątne’
Rozważmy ciąg liczbowy:
a1 = 1, a2 = 3, a3 = 6, a4 = 10, a5 = 15, a6 = 21… itd.
Znajdź zasadę generowania wartości ciągu i napisz program znajdujący wartość ciągu dla określonego indeksu
(dla wprowadzonej wartości 4, na wyjściu program powinien wygenerować wartość 10).
Napisz wersję rekurencyjną.

i napisałem coś takiego

public class ciagRek
{ int wyrazCiagu(int wyr){
    if (wyr < 2) return wyr; }{
    return wyr + wyrazCiagu(wyr-1);} 
      System.out.print(wyrazCiagu(wyr)); 
        System.out.println();}

i przy kompilowaniu wychodzi mi błąd <identifier> expected

problem jest zapewne banalny ale nie mam pojęcia jak go rozwiązać
z góry dzięki za pomoc
pzdr

0

Sformatuj to po ludzku, to może ktoś to przeczyta.

0
public class ciagRek
{
  int wyrazCiagu(int wyr) {
    if (wyr < 2) return wyr;
  }{
    return wyr + wyrazCiagu(wyr-1);
  }
  System.out.print(wyrazCiagu(wyr));
  System.out.println();
}

a teraz sobie przeanalizuj ktory nawias jest do czego

0

dobra poprawiłem to na coś takiego:

public class ciagRek
{
  int wyrazCiagu(int wyr) 
  {
    if (wyr < 2) return wyr;
    return wyr + wyrazCiagu(wyr-1);
    System.out.println(wyrazCiagu(wyr));
   }
}

ale teraz pokazuje mi błąd w 7 linijce unreachable statement :-/

0

?
to

System.out.println(wyrazCiagu(wyr));

Nie wykona sie nigdy, bo return powoduje natychmiastowe wyjście z funkcji. Instrukcje ZA returnem nie maja prawa się wykonać.

0

ok rozumiem, czyli co mam zrobić aby program działał poprawnie?

0
int wyrazCiagu(int wyr) 
{
  if (wyr < 2) 
    return wyr;
  return (wyr + wyrazCiagu(wyr-1));
}

i wywołanie :

System.out.println(wyrazCiagu(liczba));
0
public class ciagRek
{
    int wyrazCiagu(int wyr)
        {
            if (wyr < 2) return wyr;  
            return wyr + wyrazCiagu(wyr-1);          
        }
        
public class Main 
    {
    public static void main(String args[])
        {  
         System.out.println(wyrazCiagu(wyr));
        }
    }
}        

zrobiłem tak jak kazałeś ale nadal nie chodzi;/

0

A czemu ma chodzić? To co napisałeś to bzdura jakaś. Moze warto nauczyc się PODSTAW języka w którym chcesz pisać?

class ciagRek
{
    static int wyrazCiagu(int wyr)
        {
            if (wyr < 2) return wyr;  
            return wyr + wyrazCiagu(wyr-1);          
        }
}
        
public class Main 
    {
    public static void main(String args[])
        {  
          System.out.println(ciagRek.wyrazCiagu(4));
        }
    }

0 użytkowników online, w tym zalogowanych: 0, gości: 0