Preguntas de práctica para la recursividad | conjunto 7

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>
Producción

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>
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *