[Java/Huiswerk] Programmeerprobleem

Pagina: 1
Acties:
  • 122 views sinds 30-01-2008
  • Reageer

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Topicstarter
hallo allemaal

ik zit een vriend van me een beetje te helpen met wat java opdrachtjes maar we komen er even niet uit, kan iemand ons misschien wat tips geven om de volgende problemen op te lossen?
Write a recursive method and a non-recursive method for the greatest common divider (GCD). Given two positive integers, the GCD is the largest integer that devides them both. GCD (m, n) can be defined as follows:

* GCD(m, n) is n, if n is less than or equal to m and n divides m
* GCD(m, n) is GCD(n, m), if m is less than n
* GCD(m, n) is GCD(n, m%n), otherwise
We hebben een aantal dingen geprobeerd, in principe hebben we hetvolgende geprobeerd (pseudocode)
code:
1
2
3
gcd = 1
while (m % gcd IsGeenGeheelGetal || n % gcd IsOokGeenGeheelGetal)
    gcd++;

Waar we vast komen te zitten is bij dat stukje waar je checkt of m of n % gcd geen geheel getal is. Hoe doe je dat in java? Aangenomen dat onze denkwijze klopt :)

Maar hoe je hier een recursieve methode van maakt kunnen we al helemaal niet bedenken :'(

Kan iemand ons hier een beetje mee helpen

thx

Verwijderd

Hint: gcd(18,96) == 2 * gcd(9,48)

HTH :)

Edit: Je hebt trouwens al een hele leuke recursieve definitie hierboven. :o

  • Skinkie
  • Registratie: Juni 2001
  • Laatst online: 09-06-2020

Skinkie

Op naar de 500

Heeeeeeeeeeee dat ken ik! :) das opdracht 4.11.

Uit Introduction To Java Programming...

je moet gewoon precies de regeltjes doen...
je kunt vast zelf de functie er bij wel verzinnen, ik heb alleen geen m en n gebruikt >:) maar suc6 met :Y)

* GCD(m, n) is n, if n is less than or equal to m and n divides m
if ((i2<=i1) && ((i1%i2)==0)) return i2;

* GCD(m, n) is GCD(n, m), if m is less than n
if (i1<i2) return GCD(i2,i1);

* GCD(m, n) is GCD(n, m%n),
return GCD(i2, i1%i2);

Steun Elkaar, Kopieer Nederlands Waar!


  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13

MaxxRide

Surf's up

een mod (%) levert altijd een geheel getal op

If you are not wiping out you are nog pushing enough...


Verwijderd

Haha, ik heb die opdracht pas geleden ook moeten maken.
De source staat nog op mijn HD :)

hiero
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// _04_11_Gcd.java: berekent van 2 postive integers, de grootste gemeenschappelijke deler
public class _04_11_Gcd
{
    // Main method
    public static void main(String[] args)
    {
        // Vraag om invoer
        System.out.print("Voer positieve integer 1 in: ");
        int getal1 = MyInput.readInt();
        System.out.print("Voer positieve integer 2 in: ");
        int getal2 = MyInput.readInt();
        
        // Geef het resultaat weer
            System.out.println("Het resultaat is: " + gcd(getal1, getal2));
    }
    
    public static int gcd(int m, int n)
    {
        // Als de waarden gelijk zijn
        if (m == n)
            return m;
        // Als n groter is, verwissel
        else if (m < n);
        {
            int temp = m;
            m = n;
            n = temp;
        }
        
        // Bereken de GCD
        for (int count=n-1; count>1; count--)
        {
            if ((m%count==0) && (n%count==0))
                return count;
        }
        
        // Indien geen GCD, geef 0
        return 0;
    }
}