Практические вопросы для рекурсии | Комплект 7
Question 1 Predict the output of the following program. What does the following fun() do in general?
C++
#include <iostream>using namespace std;int fun ( int n, int *fp ){ int t, f; if ( n <= 1 ) { *fp = 1; return 1; } t = fun ( n - 1, fp ); f = t + *fp; *fp = t; return f;}int main(){ int x = 15; cout << fun(5, &x) << endl; return 0;}// This code is contributed by shubhamsingh10 |
C
#include <stdio.h>int fun ( int n, int *fp ){ int t, f; if ( n <= 1 ) { *fp = 1; return 1; } t = fun ( n-1, fp ); f = t + *fp; *fp = t; return f;}int main(){ int x = 15; printf("%d
",fun(5, &x)); return 0;} |
Java
import java.io.*;class GFG { static int fp = 15; static int fun ( int n) { int t, f; if ( n <= 1 ) { fp = 1; return 1; } t = fun ( n - 1); f = t + fp; fp = t; return f; } public static void main (String[] args) { System.out.println(fun(5)); }}// This code is contributed by shubhamsingh10 |
Python3
fp = 15def fun ( n ): global fp if ( n <= 1 ): fp = 1 return 1 t = fun ( n - 1 ) f = t + fp fp = t return f# Driver codeprint(fun(5))# This code is contributed by shubhamsingh10 |
C#
using System; class GFG{ static int fp = 15; static int fun ( int n) { int t, f; if ( n <= 1 ) { fp = 1; return 1; } t = fun ( n - 1 ); f = t + fp; fp = t; return f; } static public void Main () { Console.Write(fun(5)); }}// This code is contributed by shubhamsingh10 |
Javascript
<script>//Javascript Implementationvar fp = 15;function fun( n ){ var t, f; if ( n <= 1 ) { fp = 1; return 1; } t = fun ( n - 1 ); f = t + fp; fp = t; return f;}// Driver Codedocument.write(fun(5));// This code is contributed by shubhamsingh10</script> |
Выход:
8
Программа рассчитывает n-е число Фибоначчи. Выражение t = fun (n-1, fp) дает (n-1) -ое число Фибоначчи, а * fp используется для хранения (n-2) -го числа Фибоначчи. Начальное значение * fp (которое в приведенной выше программе равно 15) не имеет значения. Следующее дерево рекурсии показывает все шаги с 1 по 10 для выполнения fun (5, & x).
(1) веселье (5, fp)
/
(2) fun (4, fp) (10) t = 5, f = 8, * fp = 5
/
(3) fun (3, fp) (9) t = 3, f = 5, * fp = 3
/
(4) fun (2, fp) (8) t = 2, f = 3, * fp = 2
/
(5) fun (1, fp) (7) t = 1, f = 2, * fp = 1
/
(6) * fp = 1Вопрос 2: Предскажите результат следующей программы.
Выход:
1 2 1 3 1 2 1 4 1 2 1 3 1 2 1
веселье (4)
/
веселье (3), печать (4), веселье (3) [веселье (3) печатает 1 2 1 3 1 2 1]
/
веселье (2), печать (3), веселье (2) [веселье (2) печатает 1 2 1]
/
веселье (1), печать (2), веселье (1) [веселье (1) печатает 1]
/
fun (0), print (1), fun (0) [fun (0) ничего не делает]Пожалуйста, напишите комментарии, если вы обнаружите, что какой-либо из ответов / кодов неверен, или вы хотите поделиться дополнительной информацией / вопросами по темам, обсужденным выше.
Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.