Ich mache eine Aufgabe, wo ich eine iterative und rekursive Funktion erstellen muss, die zwei Arrays (x_vals [i] und y_vals [i]) liest und die GCD jeweils ausgibt. Die Ergebnisse der rekursiven und der iterativen Funktionen sollten identisch sein, ansonsten stimmt etwas mit einer oder beiden Funktionen nicht. Unten ist was ich habe. Was ich nicht verstehen kann, ist, was mit dem Programm nicht stimmt, zum Beispiel warum meine Ergebnisse nicht übereinstimmen.GCD, iterative und rekursive Ausgabe
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* function prototypes */
int iterGCD(int x, int y);
int recGCD(int x, int y);
int main(int argc, char *argv[])
{
int num_vals = 6;
int x_vals[] = {3, 9, 12, 36, 1, 105};
int y_vals[] = {3, 21, 18, 27, 12, 91};
int i = 0;
printf("Assignment 2 Problem 2 by <Jonathan Taylor>.\n\n");
while (i<num_vals)
{
printf("Iterative GCD: x = %d, y = %d, result = %d\n", x_vals[i], y_vals[i], iterGCD(x_vals[i],y_vals[i]));
printf("Recursive GCD: x = %d, y = %d, result = %d\n\n", x_vals[i], y_vals[i], recGCD(x_vals[i],y_vals[i]));
i++;
}
return 0;
}
int iterGCD(int x, int y)
{
int GCD = 1;
int number = 1;
/*For loop method, you could ignore if you like
for (number = 1; number <= x && number <= y; ++number){
if(x % number == 0 && y % number == 0){
GCD = number;
}
*/
while ((number <= x) && (number <= y)) {
++number;
if(x % number == 0 && y % number == 0) {
GCD = number;
}
return GCD;
}
}
int recGCD(int x, int y)
{
if(y != 0){
int remainder = x % y;
return recGCD(y, remainder);
}
return x;
}
Warum denken Sie etwas nicht in Ordnung ist? –
Was sind Ihre Ergebnisse? – MrJLP
Zeige Ergebnisse für jedes und was erwartet wird – MrJLP