Rekursion
Rekursion
(Q1) Im Folgenden ist die Funktion strange Teil einer Klasse. Gehen Sie davon aus, dass die Argumente x und y größer sind als
0, wenn die Funktion aufgerufen wird. Zeigen Sie den Trockenlauf/die Arbeitsweise. [5,2007]
int seltsam(int x, int y)
{
//Angenommen x>=0 und y>0
wenn (x >= y)
{
x = x - y;
return strange(x, y);
}
sonst
return x;
}
(i) Was wird die Funktion strange(20, 6) zurückgeben?
(ii) Was wird die Funktion strange(15, 6) zurückgeben?
(iii) In einer Zeile angeben, was die Funktion strange( . . .) macht.
(Q2) Die folgende Funktion show( ) und der Aufruf sind Teil einer Klasse. Angenommen, der Parameter n ist
größer als 1, wenn die Funktion aufgerufen wird. Sie gibt den Wert 1 zurück, wenn dies wahr ist, andernfalls gibt sie 0 zurück. Zeigen Sie die
Trockenlauf/Arbeit
void anrufen( )
{
int f = 2;
zeige(n , f);
}
int anzeigen(int n, int f)
{
wenn(n == f)
return 1;
wenn ( n % f == 0 || n == 1)
return 0;
sonst
return show( n, f+1);
}
(i) Was wird die Funktion show( ) zurückgeben, wenn der Wert von n 11 ist?
(ii) Was wird die Funktion show( ) zurückgeben, wenn der Wert von n 27 beträgt?
(iii) In einer Linie angeben, was die Funktion show(…) macht. [5,2008]
(Q3) Die folgenden Funktionen trial() und perform() sind Teil einer bestimmten Klasse. Beantworten Sie die folgenden Teile.
unten. Zeigen Sie das Testen der Funktionsweise.
int Versuch()
{
wenn(n==1)
return 2;
sonst wenn(n==2)
gib 3 zurück;
sonst
return trial(n-2) + trial(n-1);
}
void ausführen(int p)
{
int x;
für(int i=1;i<=p;i++)
{
x=Versuch(i);
[Link](x + " ");
}
}
i) Was wird die Funktion trial() zurückgeben, wenn der Wert von n 4 ist? 2
ii) Was wird die Funktion perform() ausgeben, wenn der Wert von p 5 ist? 2
iii) Nennen Sie in einer Zeile, was die Funktion trial() tut, abgesehen von [ 1,2009]
der Rekursion?
(Q4) Die folgenden Funktionen numbers(int) und numbers1(int) sind Teil einer Klasse. Beantworten Sie die Fragen.
Unten dargestellt ist der Trockenlauf/Arbeitsablauf:
öffentliche void zahlen(int n)
{
wenn(n>0)
{
[Link](n + " ");
zahlen(n-2);
[Link](n + " ");
}
}
public String zahlen1(int n)
{
wenn(n<=0)
return “”;
return(zahlen1(n-1)+n+" ";
}
i) What will be the output of the function numbers(int n) when n=5? [2]
ii) Was wird die Funktion numbers1(int n) zurückgeben, wenn n=6? [2]
iii) Nennen Sie in einer Zeile die Funktion, die numbers1(int) neben der [ 1,2010]
Rekursion ausführt.
(Q5) Das Folgende ist ein Teil einer Klasse. Was wird die Ausgabe der Funktion mymethod( ) sein, wenn die
Der Wert des Zählers beträgt 3? Zeigen Sie die Trockenlauf/Arbeit.
void meineMethode(int zähler)
{
wenn(counter == 0)
[Link](“ “);
sonst
{
[Link]("Hallo " + counter);
mymethod(- -counter);
[Link](“ “+ counter);
}
} [ 5,2011]
(Q7) Die folgende Funktion Recur() ist Teil einer Klasse. Was wird die Ausgabe der Funktion Recur() sein?
wenn der Wert von n gleich 10 ist. Zeigen Sie den Trockenlauf/ die Arbeitsweise.
(Q9) Die folgende Funktion ist Teil einer Klasse. Angenommen, 'x' und 'y' sind positive ganze Zahlen, die größer als 0 sind.
Beantworten Sie die gegebenen Fragen zusammen mit einem Trockenlauf / einer Arbeitsweise.
(Q10) Die folgende Funktion Check() ist Teil einer Klasse. Was wird die Funktion Check() zurückgeben, wenn die
Sind die Werte von sowohl 'm' als auch V gleich 5? Zeigen Sie den Trockenlauf / die Berechnung. [5,2016]
int Überprüfen (int m, int n)
{
wenn (n == 1)
return --m;
ansonsten
return + + m + Überprüfen (m,n);
}
(Q11) Die folgende Funktion magicfun( ) ist Teil einer Klasse. Was wird die Funktion magicfun( ) zurückgeben?
Wann ist der Wert von n=7 und n=10, jeweils? Zeigen Sie den Durchlauf/Arbeiten: [5,2017]
int magischeFunktion(int n)
{
wenn (n == 0)
return 0;
sonst
return magicfun(n/2) * 10 + (p % 2);
}
Rekursion (Programme)
(Q1) Eine Klassenrekursion wurde definiert, um die Fibonacci-Serie bis zu einer Grenze zu finden. Einige der Mitglieder der
Die Klasse ist unten aufgeführt:
Class name : Rekursion [10,2005]
Datenmitglieder/ Instanzvariablen :
a, b, c, limit : Ganzzahldatentyp Mitgliedsfunktionen/-methoden
recursion( ) : Konstruktor, um a, b, c mit entsprechenden Werten zuzuweisen.
void eingabe( ) : die Grenze der Reihe akzeptieren
int fib(int n) : den n-ten Fibonacci-Term mit rekursiver Technik zurückgeben
void generiere_fibreihe() : um die Fibonacci-Folge bis zur gegebenen Grenze zu generieren
(a) Specify the class recursion, giving the details of the constructor, int fib( ), void generate_fibseries( ). You
Sie können davon ausgehen, dass andere Funktionen für Sie geschrieben wurden und Sie die Hauptfunktion nicht schreiben müssen.
(b) Warum führen rekursive Funktionen zu einer langsameren Ausführung des Programms?
(Q2) Die Klasse Convert wurde definiert, um die Ziffern einer Ganzzahl in Worten auszudrücken. [10,2006]
Die Einzelheiten der Klasse sind unten angegeben:
Class name : Konvertieren
Datenmitglieder:
n : Ganzzahl, deren Ziffern in Worten ausgedrückt werden sollen.
Member functions:
Konvertieren() : Konstruktor zur Zuweisung von 0 an n.
void inpnum( ) : den Wert von n akzeptieren.
void extdigit(int) : Die Ziffern von n mit der rekursiven Technik extrahieren.
void nummer_in_wörter(int ) : die Ziffern einer Ganzzahl n in Worten anzuzeigen.
Spezifizieren Sie die Klasse Convert, mit Details zum Konstruktor und den Funktionen, void inpnum( ), void
extdigit(int) und void num_to_words(). Die Hauptfunktion muss nicht geschrieben werden. [10,2007]
(Q3) Eine Klasse Revstr definiert eine rekursive Funktion, um einen String umzukehren und zu überprüfen, ob er ein 10 Palindrom ist.
Die Einzelheiten der Klasse sind unten aufgeführt:
Klassenname : Revstr
Datenmitglieder/Instanzvariablen :
Str : speichert die Zeichenfolge
Revst : speichert die Umkehrung des Strings
Mitgliedsfunktionen/-methoden:
void getStr( ) : den String akzeptieren
void recReverse( int ) : den String mit der rekursiven Technik umkehren
void überprüfen( ) : Um die ursprüngliche Zeichenfolge anzuzeigen, ihre Umkehrung und ob die Zeichenfolge ein Palindrom ist oder nicht.
Specify the class Revstr giving the details of the functions void getStr( ), void recReverse(int) and void check(
). The main function need not be written. [10,2008]
(Q4) Entwerfen Sie eine Klasse Change, um stringbezogene Operationen auszuführen. Die Einzelheiten der Klasse sind unten angegeben:
Klassenname : Ändern
Datenmitglieder
str : speichert das Wort
newstr : speichert das geänderte Wort
len : speichert die Länge des Wortes Mitgliedsfunktionen
Change() : Standardkonstruktor
void eingibewort() : ein Wort akzeptieren
char caseconvert(char ch) : konvertiert die Groß- und Kleinschreibung des Zeichens und gibt es zurück
void recchange(int): extrahiert Zeichen mit Hilfe einer rekursiven Technik und ändert deren Groß- und Kleinschreibung.
caseconvert() und bildet ein neues Wort
void anzeigen() : zeigt beide Wörter an
b) Geben Sie die Klasse Change an, mit Angaben zum Konstruktor(), Mitgliedsfunktionen void inputword(), char
caseconvert(char ch), void recchange(int) und void display(). Definieren Sie die Hauptfunktion, um ein Objekt zu erstellen und
Rufe die Funktionen entsprechend auf, um die oben genannte Änderung im gegebenen Wort zu ermöglichen. [8]
{"finite_recursion":"Begrenzen Sie die Unterschiede zwischen endlicher und unendlicher Rekursion. Die endliche Rekursion hat eine festgelegte Anzahl von Aufrufen, die zum Ende führen, während die unendliche Rekursion nicht zu einem Basisfall gelangt und somit nie endet.","infinite_recursion":"Die unendliche Rekursion führt zu einer endlosen Schleife von Aufrufen, die den Programmablauf zum Absturz bringen kann."}
[ 2,2010]
(Q5) Eine Klasse DeciOct wurde definiert, um eine Dezimalzahl in ihre äquivalente Oktalzahl umzuwandeln. Einige der
the members of the class are given below:
Klassenname : DeciOct
Datenmitglieder
n : speichert die Dezimalzahl
Okt : speichert die äquivalente oktale Zahl
Mitgliedsfunktionen:
DeciOct() : Konstruktor zur Initialisierung der Datenmitglieder auf 0
void getnum(int nn) : assigns nn to n
void dezimale_oktal() : berechnet das oktale Äquivalent von n und speichert es mit der rekursiven Technik in oct
void anzeigen() : zeigt die Dezimalzahl n an, ruft die Funktion deci_oct() auf und zeigt deren Oktalwert an
entsprechend
a) Geben Sie die Klasse DeciOct an, einschließlich der Details des Konstruktors(), void getnum(int), void deci_oct() und void
zeige(). Definieren Sie auch eine Hauptfunktion, um ein Objekt zu erstellen und die Funktionen entsprechend aufzurufen, um die Aufgabe zu ermöglichen.
b) State any two disadvantages of using recursion. [ 10,2011]
(Q6) Eine glückliche Zahl ist eine Zahl, bei der die endgültige Summe der Quadrate der Ziffern der Zahl ist
entspricht 1. [10,2012]
Beispiel :
28 = (2)² + (8)² = 4 + 64 = 68
68 = (6)² + (8)² = 36 + 64 = 100
100 = ( 1 )2 + ( 0 )2 + ( 0 )2 = 1 + 0 + 0 = 1
Daher ist 28 eine glückliche Zahl.
Example :
12 = (1)2 + (2)2 = 1 + 4 = 5 Daher ist 12 keine glückliche Zahl.
Entwerfen Sie eine Klasse Happy, um zu überprüfen, ob eine gegebene Zahl eine fröhliche Zahl ist. Einige der Mitglieder der Klasse sind
gegeben unten:
Class Name : Glücklich
Datenmitglieder
n: speichert die Nummer
Mitgliederfunktionen:
Happy( ) : Konstruktor zum Zuweisen von 0 an n
void getnum(intnn) : den Parameterwert der Zahl n = nn zuweisen
int sum_sq_digits(int x) : gibt die Summe der Quadrate der Ziffern der Zahl x zurück, unter Verwendung der Rekursion
Technik.
void istglücklich() : überprüft, ob die gegebene Zahl glücklich ist, indem die Funktion sum_sq_digits(int) aufgerufen wird und
zeigt eine geeignete Nachricht an.
Spezifizieren Sie die Klasse Happy mit Details zum Konstruktor(), void getnum(int), int sum_sq_digits(int) und void
isglücklich(). Definieren Sie auch eine Hauptfunktion, um ein Objekt zu erstellen und die Methoden aufzurufen, um eine glückliche Zahl zu überprüfen.
(Q6) Eine Emirp-Zahl ist eine Zahl, die vorwärts und rückwärts prim ist. Beispiel: 13 und 31 sind beide
Primzahlen. Somit ist 13 eine Emirp-Zahl.
Entwerfen Sie eine Klasse Emirp, um zu überprüfen, ob eine gegebene Zahl eine Emirp-Zahl ist oder nicht. Einige der Mitglieder der Klasse sind
gegeben unten:
Class Name : Emirp
Datenmitglieder
n : speichert die Nummer
rev : speichert die Umkehrung der Zahl
f : speichert den Divisor
Member functions
Emirp(int nn) : n=nn, rev=0 und f=2 zuweisen
int istprim(int x) : Überprüfe, ob die Zahl eine Primzahl ist, indem du die rekursive Technik verwendest, und gib 1 zurück, wenn sie prim ist.
ansonsten 0 zurückgeben.
void isEmirp() : Drehe die gegebene Zahl um und überprüfe, ob sowohl die ursprüngliche Zahl als auch die umgekehrte
Zahlen sind Primzahlen, indem die Funktion isprime(int) aufgerufen wird, und das Ergebnis mit einer entsprechenden Nachricht angezeigt wird.
Spezifizieren Sie die Klasse Emirp und geben Sie Details zum Konstruktor (int), int isprime(int) und void isEmirp() an. Definieren Sie die
Hauptfunktion zum Erstellen eines Objekts und zum Aufrufen der Methoden zur Überprüfung auf Emirp-Zahlen. [10,2013]
(Q7) Eine Klasse SeriesSum ist entworfen, um die Summe der folgenden Reihe zu berechnen:-
Summe= x2/1! + x4/3! + x6/5! + …. xn/(n-1)!
Einige der Mitglieder der Klasse sind unten aufgeführt:
Class name : SerienSumme
Datenmitglieder
x : to store an integer number
n : um die Anzahl der Begriffe zu speichern
Mitgliedsfunktionen
SerieSum(intxx,intnn) : constructor to assign x=xx, n=nn
doublefindfact(int m) : die Fakultät von m mit rekursiver Technik zurückzugeben
void berechnen() : um die Summe der Reihe zu berechnen, indem man die rekursiven Funktionen wiederholt aufruft
void anzeigen() : die Summe der Reihe anzuzeigen
a) Geben Sie die Klasse SeriesSum an, einschließlich der Details des Konstruktors(int,int), double findfact(int), double
findpower(int,int), void calculate() und void display(). Definieren Sie die main() Funktion, um ein Objekt zu erstellen und aufzurufen.
die Funktionen entsprechend zu aktivieren, um die Aufgabe zu ermöglichen. 8
b) State the two differences between iteration and recursion. [2,2014]
Eine Klasse Admission enthält die Zulassungsnummern von 100 Schülern. Einige der Daten [10] Mitglieder /
Die Mitgliedsfunktionen sind wie folgt angegeben:
Class name Admission
Datenmitglied/Instanzvariable:
Adno[ ] : Ganzzahlarray zur Speicherung von Zulassungsnummern
Mitgliedsfunktionen/-methoden:
Admission() : Konstruktor zur Initialisierung der Array-Elemente
void fillArray() : die Elemente des Arrays in aufsteigender Reihenfolge akzeptieren
int binSearch(int 1, int u, int v) : nach einer bestimmten Immatrikulationsnummer (v) zu suchen
Verwendung der binären Suche und rekursiven Technik und gibt 1 zurück, wenn gefunden, andernfalls -1 zurückgeben. Geben Sie die Klasse an.
Zulassung mit Einzelheiten zum Konstruktor, void fillArray() und int binSearch(int, int, int). Definieren Sie die main()
Funktion zum Erstellen eines Objekts und zum Aufrufen der Funktionen entsprechend, um die Aufgabe zu ermöglichen. [10,2015]
(Q9) Eine Disarium-Zahl ist eine Zahl, bei der die Summe der Ziffern hoch ihrer jeweiligen Position ist
gleich der Zahl selbst. [10,2016]
Beispiel: 135 = i'+32 + 53 Daher ist 135 eine Disarium-Zahl.
Design a class Disarium to check if a given number is a disarium number or not. Some of the members of the
Die Klasse ist unten angegeben:
Klassennamen : Disarium
Datenmitglied/Instanzvariable :
int num : speichert die Nummer
int größe : speichert die Größe der Zahl
Mitgliederfunktionen/-methoden :
Disarium(int nn) : parametrisierter Konstruktor zur Initialisierung der Datenmitglieder n = nn und Größe = 0
void countDigit( ) : zählt die Gesamtanzahl der Ziffern und weist sie der Größe zu
int sumOfDigit(int n, int p): (gibt die Summe der Ziffern der Zahl (n) zur Potenz ihrer jeweiligen
Positionen(p) unter Verwendung einer rekursiven Technik
void check( ) : überprüft, ob die Zahl eine Disarium-Zahl ist und zeigt das Ergebnis mit einer
angemessene Nachricht
Specify the class Disarium giving the details of the constructor ), void countDigit( ), int sumofDigits(int, int)
und void check(). Definieren Sie die main() Funktion, um ein Objekt zu erstellen und die Funktionen entsprechend aufzurufen, um zu ermöglichen
die Aufgabe.
(Q10)Eine Klasse Palin wurde definiert, um zu überprüfen, ob eine positive Zahl eine Palindrom-Zahl ist oder nicht. Die
Die Zahl ‚N‘ ist ein Palindrom, wenn die ursprüngliche Zahl und ihre Umkehrung gleich sind. Einige der Mitglieder der Klasse
werden unten angegeben:
Klassenname : Palin [10,2017]
Datenmitglieder/Instanzvariablen:
num : Ganzzahl zur Speicherung der Zahl
revnum : integer to store the reverse of the number
Methoden/Member-Funktionen:
Palin( ) : Konstruktor zur Initialisierung der Datenmitglieder mit zulässigen Anfangswerten
void akzeptieren( ) : die Nummer akzeptieren
int umkehren(int y) : kehrt das parametrisierte Argument y um und speichert es in 'revnum'
Verwendung von rekursiver Technik
void check() : überprüft, ob die Zahl ein Palindrom ist, indem die Funktion aufgerufen wird
drehe( ) um und zeige das Ergebnis mit einer geeigneten Nachricht an
Spezifizieren Sie die Klasse Palin mit den Details des Konstruktors ), void accept( ), int reverse( int) und void check( ).
Definieren Sie die Haupt()-Funktion, um ein Objekt zu erstellen und die Funktionen entsprechend aufzurufen, um die Aufgabe zu ermöglichen.
(Q11) Entwerfen Sie eine Klasse Perfect, um zu überprüfen, ob eine gegebene Zahl eine perfekte Zahl ist oder nicht. [Eine Zahl wird als perfekt bezeichnet,
Perfekt, wenn die Summe der Faktoren der Zahl ohne sich selbst gleich der ursprünglichen Zahl ist.
Beispiel: 6 = 1 + 2 + 3 (wobei 1, 2 und 3 Faktoren von 6 sind, ohne sich selbst einzuschließen)
Einige der Mitglieder der Klasse sind unten aufgeführt:
class: Perfect
Num: die Nummer speichern
Perfekt(int nn) : parametrisierter Konstruktor zur Initialisierung des Datenmitglieds num=nn
int sum_of_factors(int i) : gibt die Summe der Teiler der Zahl (num) zurück, ohne sie selbst einzuschließen, unter Verwendung von
rekursive Technik
void chcck() :prüft, ob die gegebene Zahl perfekt ist, indem die Funktion sum_of_factors() aufgerufen wird und
zeigt das Ergebnis mit einer angemessenen Nachricht an
Spezifizieren Sie die Klasse Perfect und geben Sie Details zum Konstruktor, int sum_of_factors(int) und void check() an. Definieren Sie eine
main( ) Funktion zur Erstellung eines Objekts und zum Aufrufen der Funktionen entsprechend, um die Aufgabe zu ermöglichen.
[10,2018]