rekursive Funktionen zu finden, die wichtigsten Faktoren
machte ich eine rekursive Funktion, die die Primfaktoren einer Zahl, aber es hat einen bug, was macht turbo-c beenden. bitte helfen Sie
#include<stdio.h>
#include<conio.h>
int prime(int num);
int primefactor(int num,int i);
void main(void)
{
int num;
printf("Enter a number whose prime factors are to be calculated:");
scanf("%d",&num);
primefactor(num,i);
i=num
getch();
}
int primefactor(int num,int i)
{
if(i==2)
return 1;
if(num%i==0)
{
if(prime(num))
{
printf(",%d",num);
num=num/i;
i++;
}
}
i--;
primefactor(num,i);
return 0;
}
int prime(int num)
{
int i,flag;
for(i=2;i<num;i++)
{
if(num%i==0)
flag=0;
}
return flag;
}
- Turbo C? Als in den 1980er Jahren-der ära C-compiler?
- Auf welcher Linie ist die compiler Meldung von Problemen und/oder Absturz? Sie haben keine Informationen, die möglicherweise nützlich für Menschen, um zu helfen lösen Ihre Probleme.
- borland turbo c 3 so ..i dont get warum bin ich unterrichtete es in der Uni 🙁
- Sie müssen set flag = 1 in
prime
und Sie wieder am Ende. Oder, noch besser, wenn Sie finden, ein Faktor, return 0; wenn Sie drop-off das Ende der Schleife return 1. Beachten Sie, dass Sie wirklich brauchen nur zu gehen, wie weit die Wurzel von num-look für Faktoren. Das ist egal, viel, wenn Sie haben nur weniger als 10 Ziffern in der Zahl, aber es ist wirklich egal, wenn Sie noch viele mehr stellen. - Turbo C war sehr viel in Maßnahmen, die in der akademischen Welt bis mindestens 2003 🙂
- Als Teil des Lehrplans? Ich denke nicht so, es sei denn, du hast von Computern/software-gestiftet von der Senioren :).
- hat ein int main( (assumesTurbo C Windows) @Praveen: ist Windows immer noch weit verbreitet in Bildungseinrichtungen. Zumindest in Indien. Vor allem aufgrund von Widerstand in die Lehrer zu bewegen, um auf Linux. VC ist/war teuer für einige. Kann seine zu langsam auf die langsameren Maschinen, die noch immer fortbestehen. Also Turbo C hält immer noch gut drin. Vielleicht nicht mehr 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
(wenig zu schläfrig, um guten code zu schreiben.. also tut mir Leid im Voraus für die bugs :p )
eine einfachere nicht-rekursive version
wenn Sie haben, Rekursion zu verwenden,
Welchen Wert meinst du
i
haben in(*)
?Nicht wissen, was Sie wollen
i
um von Anfang an so, aber ich bin mir ziemlich sicher, dass Sie nicht wollen, dass es etwas random. Wenn Sie möchten, es zu starten, mit dem der Wertnum
Sie zuweisen müssennum
an Sie, nachdem Sie es gelesen:void main
? =(Vollständige rekursive Lösung in c++ (für c ersetzen cout-Zeilen mit printf):
static
ein muss in diesem Fall?Die beste Art der Umsetzung Primzahl-ZERLEGUNG mit geringem overhead Funktionsaufrufe wäre . . .
Die Anzahl der Funktionsaufrufe (Rekursion) ist gleich der Anzahl der Primfaktoren, einschließlich 1.
Habe ich diese in C. Je nach compiler, geringfügige änderungen erforderlich sein könnten, um in das Programm.
Stimmen mit IVlad - auch, was in dem Fall passiert, wenn num eine Primzahl ist? Wie oft wird die rekursive Funktion aufgerufen werden, z.B. num = 7?
Implementierung in java..