Preguntas de práctica para la recursividad | conjunto 4

Pregunta 1 
Prediga la salida del siguiente programa. 

C++

#include <iostream>
using namespace std;
 
void fun(int x)
{
    if(x > 0)
    {
        fun(--x);
        cout << x <<" ";
        fun(--x);
    }
}
 
int main()
{
    int a = 4;
    fun(a);
    return 0;
}
 
// This code is contributed by SHUBHAMSINGH10

C

#include<stdio.h>
void fun(int x)
{
  if(x > 0)
  {
     fun(--x);
     printf("%d\t", x);
     fun(--x);
  }
}
 
int main()
{
  int a = 4;
  fun(a);
  getchar();
  return 0;
}

Java

import java.io.*;
 
class GFG {
 
    static void fun(int x)
    {
        if(x > 0)
        {
            fun(--x);
            System.out.print(x + " ");
            fun(--x);
        }
    }
     
    public static void main (String[] args)
    {
        int a = 4;
        fun(a);
    }
}
 
// This code is contributed by SHUBHAMSINGH10

Python3

def fun(x):
     
    if(x > 0):
        x -= 1
        fun(x)
        print(x , end=" ")
        x -= 1
        fun(x)
         
# Driver code
a = 4
fun(a)
 
# This code is contributed by SHUBHAMSINGH10

C#

using System;
 
class GFG{
 
    static void fun(int x)
    {
        if(x > 0)
        {
            fun(--x);
            Console.Write(x + " ");
            fun(--x);
        }
    } 
     
    static public void Main ()
    {
        int a = 4;
        fun(a); 
    }
}
// This code is contributed by SHUBHAMSINGH10

Javascript

<script>
 
function fun(x)
{
    if (x > 0)
    {
        x -= 1
        fun(x)
        document.write(x + " ");
        x -= 1
        fun(x)
    }   
}
 
// Driver code
let a = 4;
fun(a)
 
// This code is contributed by bobby
 
</script>
Producción: 

0 1 2 0 3 0 1

 

Complejidad del tiempo: O(2 n )

Espacio Auxiliar: O(n)
 

 
                   fun(4);
                   /
                fun(3), print(3), fun(2)(prints 0 1)
               /
           fun(2), print(2), fun(1)(prints 0)
           /
       fun(1), print(1), fun(0)(does nothing)
       /
    fun(0), print(0), fun(-1) (does nothing)

Pregunta 2 
Prediga la salida del siguiente programa. ¿Qué hace el siguiente fun() en general? 

C++

#include <iostream>
using namespace std;
  
int fun(int a[],int n)
{
  int x;
  if(n == 1)
    return a[0];
  else
    x = fun(a, n - 1);
  if(x > a[n - 1])
    return x;
  else
    return a[n - 1];
}
 
int main()
{
  int arr[] = {12, 10, 30, 50, 100};
  cout << " " << fun(arr, 5) <<" ";
  getchar();
  return 0;
}
 
// This code is contributed by shubhamsingh10

C

#include<stdio.h>
int fun(int a[],int n)
{
  int x;
  if(n == 1)
    return a[0];
  else
    x = fun(a, n-1);
  if(x > a[n-1])
    return x;
  else
    return a[n-1];
}
 
int main()
{
  int arr[] = {12, 10, 30, 50, 100};
  printf(" %d ", fun(arr, 5));
  getchar();
  return 0;
}

Java

import java.io.*;
  
class GFG {
  
    static int fun(int a[],int n)
    {
        int x;
        if(n == 1)
            return a[0];
        else
            x = fun(a, n - 1);
        if(x > a[n - 1])
            return x;
        else
            return a[n - 1];
    }
     
    public static void main (String[] args)
    {
        int arr[] = {12, 10, 30, 50, 100};
        System.out.println(" "+fun(arr, 5)+" ");
    }
}
 
// This code is contributed by shubhamsingh10

Python3

def fun( a, n):
    if(n == 1):
        return a[0]
    else:
        x = fun(a, n - 1)
    if(x > a[n - 1]):
        return x
    else:
        return a[n - 1]
 
# Driver code
arr = [12, 10, 30, 50, 100]
print(fun(arr, 5))
 
# This code is contributed by shubhamsingh10

C#

using System;
 
public class GFG{
    static int fun(int[] a,int n)
    {
        int x;
        if(n == 1)
            return a[0];
        else
            x = fun(a, n - 1);
        if(x > a[n - 1])
            return x;
        else
            return a[n - 1];
    }
     
    static public void Main ()
    {
        int[] arr = {12, 10, 30, 50, 100};
        Console.Write(" "+fun(arr, 5)+" ");
    }
}
 
// This code is contributed by shubhamsingh10

Javascript

<script>
//Javascript Implementation
 
function fun(a, n)
{
  var x;
  if(n == 1)
    return a[0];
  else
    x = fun(a, n - 1);
  if(x > a[n - 1])
    return x;
  else
    return a[n - 1];
}
  
// Driver code
var arr = [12, 10, 30, 50, 100];
document.write(fun(arr, 5));
// This code is contributed by shubhamsingh10
</script>
Producción: 

100

 

Complejidad temporal: O(n)

Espacio Auxiliar: O(n)
 

fun() devuelve el valor máximo en la array de entrada a[] de tamaño n.

Pregunta 3 
Prediga la salida del siguiente programa. ¿Qué hace el siguiente fun() en general?

C++

#include <iostream>
using namespace std;
 
int fun(int i)
{
  if (i % 2) return (i++);
  else return fun(fun(i - 1));
}
  
int main()
{
  cout << " " << fun(200) << " ";
  getchar();
  return 0;
}
 
// This code is contributed by Shubhamsingh10

C

int fun(int i)
{
  if ( i%2 ) return (i++);
  else return fun(fun( i - 1 ));
}
 
int main()
{
  printf(" %d ", fun(200));
  getchar();
  return 0;
}

Java

import java.io.*;
 
class GFG {
    static int fun(int i)
    {
        if (i % 2 == 1) return (i++);
        else return fun(fun(i - 1));
    }
     
    public static void main (String[] args) {
        System.out.println(" " + fun(200) + " ");
    }
}
 
// This code is contributed by Shubhamsingh10

Python3

def fun(i) :
 
    if (i % 2 == 1) :
        i += 1
        return (i - 1)
    else :
        return fun(fun(i - 1))
   
print(fun(200))
 
# This code is contributed by divyeshrabadiya07

C#

using System;
 
class GFG{
     
static int fun(int i)
{
    if (i % 2 == 1) return (i++);
    else return fun(fun(i - 1));
}
 
// Driver code   
static public void Main ()
{
    Console.WriteLine(fun(200));
}
}
 
// This code is contributed by Shubhamsingh10

Javascript

<script>
 
function fun(i)
{
    if (i % 2 == 1)
        return (i++);
    else
        return fun(fun(i - 1));
}
 
// Driver code
document.write(fun(200));
 
// This code is contributed by bobby
 
</script>
Producción: 

199

 

Si n es impar, entonces devuelve n, de lo contrario devuelve (n-1). Por ejemplo, para n = 12, obtienes 11 y para n = 11 obtienes 11. La instrucción “return i++;” devuelve el valor de i solo porque es un incremento posterior. 

Complejidad temporal: O(n)

Espacio Auxiliar: O(1)
 

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 *