Rekursion < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 00:43 So 22.01.2012 | Autor: | emulb |
Aufgabe | Potenzen [mm] a^{n} [/mm] für a [mm] \in \IR [/mm] und n [mm] \in \IN [/mm] lassen sich durch die rekursive Definition
[mm] a^{n}=\begin{cases} a, & \mbox{für } n=1 \\ a^{\bruch{n}{2}}*a^{\bruch{n}{2}}, & \mbox{für } n \mbox{ gerade} \\ a*a^{n-1}, & \mbox{für } n \mbox{ ungerade} \end{cases}
[/mm]
sehr effizient berechnen. Implementieren Sie nun gemäß dieser Definition eine rekursive Java-Methode hoch(int a,int n). |
Mein Code sieht so aus:
1: | import java.util.*;
| 2: |
| 3: | public class hoch
| 4: | {
| 5: | public static void main(String[] args)
| 6: | {
| 7: |
| 8: | int exp (int a,int n); {
| 9: | if (n==1)
| 10: | return a;
| 11: | else if (n%2==0) {
| 12: | int a = exp(a,n/2);
| 13: | return a*a;
| 14: | }
| 15: | else
| 16: | return a * exp(a,n-1);
| 17: | }
| 18: | }
| 19: | }
| Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Jedoch tauchen folgende Fehlermeldungen auf, auf die ich nicht komme:
hoch.java:8: error: ';' expected
int exp (int a, int n); { (diese Meldung 2 mal)
dann zur gleichen aussage wieder in :8: steht error: <identifier> expected
und dann noch wieder in :8: error: not a statement
Es sind insgesamt 4 Fehlermeldungen.
|
|
|
|
moin emulb,
Zu aller erst mal wüsste ich gerne, wieso du die Funktion in die main-Funktion schreibst...
Mir persönlich ist nicht bekannt, das das möglich ist, aber wer weiß, wer weiß...^^
Ich glaube einfach mal, dass das dein Hauptproblem ist.
1: | import java.util.*;
| 2: |
| 3: | public class hoch
| 4: | {
| 5: | public static void main(String[] args)
| 6: | {
| 7: | int x = exp(5,20);
| 8: | }
| 9: | public int exp (int a,int n) {
| 10: | if (n==1)
| 11: | return a;
| 12: | if (n%2==0) {
| 13: | a = exp(a,n/2);
| 14: | return a*a;
| 15: | }
| 16: | return a * exp(a,n-1);
| 17: | }
| 18: |
| 19: | }
| 20: | |
So würde ich das schreiben.
Ich kann es leider grad nicht ausführen, also guck mal, ob das so klappt.
lg
Schadow
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 15:55 So 22.01.2012 | Autor: | emulb |
Die Fehlermeldungen sind immerhin weniger geworden. Nur noch eine Meldung:
hoch.java:7: error: non -static method exp(int,int) cannot be referenced from a static context
int x = exp(5,20);
Was ist nun das Problem??
|
|
|
|
|
Genau das was da steht.
Die Funktion muss static sein.
Also mach mal ein
public static exp ...
draus, dann müsste das klappen.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:18 So 22.01.2012 | Autor: | emulb |
bin verwirrt :/
|
|
|
|
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 14:50 Mo 23.01.2012 | Autor: | emulb |
Da kommt die gleiche Fehlermeldung :/ Was jetzt?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:10 Mo 23.01.2012 | Autor: | emulb |
hat sich erledigt :) habs geschafft danke trotzdem
|
|
|
|