Pregunta 1 Prediga la salida del siguiente programa. ¿Qué hace el siguiente fun() en general?
C++
#include <iostream> using namespace std; int fun(int n, int* fp) { int t, f; if (n <= 2) { *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; }
C
#include <stdio.h> int fun(int n, int* fp) { int t, f; if (n <= 2) { *fp = 1; return 1; } t = fun(n - 1, fp); f = t + *fp; *fp = t; return f; } int main() { int x = 15; printf("%d\n", 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 <= 2) { 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 = 15 def fun(n): global fp if (n <= 2): fp = 1 return 1 t = fun(n - 1) f = t + fp fp = t return f # Driver code print(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 <= 2) { 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 Implementation var fp = 15; function fun( n ) { var t, f; if ( n <= 2 ) { fp = 1; return 1; } t = fun ( n - 1 ); f = t + fp; fp = t; return f; } // Driver Code document.write(fun(5)); // This code is contributed by shubhamsingh10 </script>
5
El programa calcula el n-ésimo número de Fibonacci. La declaración t = fun ( n-1, fp ) da el (n-1) número de Fibonacci y *fp se usa para almacenar el (n-2) número de Fibonacci. El valor inicial de *fp (que es 15 en el programa anterior) no importa. El siguiente árbol de recursión muestra todos los pasos del 1 al 10, para la ejecución de fun(5, &x).
(1) fun(5, fp) / \ (2) fun(4, fp) (8) t = 3, f = 5, *fp = 3 / \ (3) fun(3, fp) (7) t = 2, f = 3, *fp = 2 / \ (4) fun(2, fp) (6) t = 1, f = 2, *fp = 1 / (5) *fp = 1
Pregunta 2: Prediga la salida del siguiente programa.
C++
#include <iostream> using namespace std; void fun(int n) { if (n > 0) { fun(n - 1); cout << n << " "; fun(n - 1); } } int main() { fun(4); return 0; } // This code is contributed by shubhamsingh10
C
#include <stdio.h> void fun(int n) { if (n > 0) { fun(n - 1); printf("%d ", n); fun(n - 1); } } int main() { fun(4); return 0; }
Java
import java.util.*; class GFG { static void fun(int n) { if (n > 0) { fun(n - 1); System.out.print(n + " "); fun(n - 1); } } public static void main(String[] args) { fun(4); } } // This code is contributed by Shubhamsingh10
Python3
def fun(n): if(n > 0): fun(n - 1) print(n, end=" ") fun(n - 1) # driver code fun(4) # This code is contributed by shubhamsingh10
C#
using System; class GFG { static void fun(int n) { if (n > 0) { fun(n - 1); Console.Write(n + " "); fun(n - 1); } } static public void Main() { fun(4); } } // This code is contributed by shubhamsingh10
Javascript
<script> function fun(n) { if(n > 0) fun(n - 1); document.write(n+" ") fun(n - 1); } // driver code fun(4) // This code is contributed by bobby. </script>
1 2 1 3 1 2 1 4 1 2 1 3 1 2 1
fun(4) / fun(3), print(4), fun(3) [fun(3) prints 1 2 1 3 1 2 1] / fun(2), print(3), fun(2) [fun(2) prints 1 2 1] / fun(1), print(2), fun(1) [fun(1) prints 1] / fun(0), print(1), fun(0) [fun(0) does nothing]
Escriba comentarios si encuentra que alguna de las respuestas/códigos es incorrecta, o si desea compartir más información/preguntas sobre los temas discutidos anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA