3.298 cursos gratis
6.267.101 alumnos
Publica tu curso gratis
Busca cursos gratis:
Estás aquí: mailxmail > Cursos de Informática > Programación > Algoritmos y lenguaje C > Llamada a funciones recursivamente

Algoritmos y lenguaje C

Autor: abraham sopla
Curso:  4,68/5 4,68/5 (12 opiniones) |10889 alumnos|Fecha publicación: 13/01/2006

Capítulo 17:

 Llamada a funciones recursivamente

Ejercicio 48

Hacer un algoritmo para un programa que  halle el elemento n de la serie, 2n: 1 2 4 8 16 32 64 128 ...  para n = 0,1,2,3,4,5,6,7,8, .... ; También diseñe una función que regrese el exponente correspondiente a la potencia 2n.

Algoritmo
Inicio
Declare n, potencia
Declare potenciadedos(x), exponente(valor)
Leer n
Potencia potenciadedos(n)
Imprimir n, potencia
Imprimir potencia, exponente(potencia)
Fin

Función potenciadedos(x)
Inicio
Si x=0 entonces potenciadedos 1
Sino potenciadedos 2*potenciadedos(x-1)
Fin si
Fin

Función exponente(valor)
Inicio
Si valor=1 entonces exponente 0
Sino exponente exponente(valor/2)+1
 Fin si
Fin

Variables
n  : valor ingresado
X  : toma valor de n
valor  : toma el valor de la variable potencia
potencia : valor de la potencia del témino n
potenciadedos : función
exponente  : función

Programa
#include<stdio.h>
int n;
int potenciadedos(int x), exponente(int valor);
int potencia;
main(void)
{
printf("   INGRESE LA POSICIÓN DEL ELEMENTO ..   ");
scanf("%d",&n);
potencia=potenciadedos(n);
printf("2 a la %d es %d",n,potencia);
printf("%d es 2 a la %d",potencia, exponente(potencia));
}

int potenciadedos(int x)
{
if(x==0)return 1;
else return 2*potenciadedos(x-1);
}

int exponente(int valor)
{
if(valor==1)return 0;
else return 1+exponente(valor/2);
}

COMENTARIO: ambos procesos son recursivos
En el caso del ejercicio anterior tal vez no note lo que sucede con la función exponente, ya que la posición que se ingresa representa el exponente. Vea el ejercicio 49 y lograra comprenderlo mejor.

Ejercicio 49

Compruebe el siguiente algoritmo ingresando valores resultados de la potencia de 2, ejemplo: 256, 32, 1024, etc. y verá la importancia de la función exponente.

Algoritmo
Inicio
Declare n
Declare exponente(valor)
Leer n
Imprimir n, exponente(n)
Fin

Funcion exponente(valor)
Inicio
Si valor=1 exponente 0
Sino exponente exponente(valor/2)+1
 Fin si
Fin

Variables
n  : valor ingresado
exponente : función
valor  : toma el valor de n

Programa
#include<stdio.h>
int exponente(int valor);
int potencia;
main(void)
{
printf("   INGRESE VALOR POTENCIA DE 2 ..   ");
scanf("%d",&potencia);
printf("%d es 2 a la %d",potencia, exponente(potencia));
}

int exponente(int valor)
{
if(valor==1)return 0;
else return 1+exponente(valor/2);
}

Ejercicio 50

Desarrollar el ejercicio 14, usando funciones y procedimientos.

Algoritmo usando funciones
Inicio
Declare opcion, base, altura, area
  Leer opcion
  Seleccionar  opcion
   Caso 1
   Leer base, altura
Imprimir area(base, altura)
   Caso 2
   Leer area, altura
   Imprimir  base(area,altura)
   Caso 3
Leer area, base
Imprimir altura(area,base)
  Fin selección
Fin

Función area(base,altura)
Inicio
 Area base*altura/2
Fin

Función base(area, altura)
Inicio
 base 2*area/altura
Fin

Función altura(area,base)
Inicio
 altura 2*area/base
Fin
 
Variables
opcion : para saber cual es calculo a realizar.
base  : valor de la base, también es función
altura  : valor de la altura, también es función
area  : valor del área, también es función

Comentario: algunas variables pueden funcionar como tal o como funciones, en este problema, fíjese por que.

Programa usando funciones
#include<stdio.h>
int operacion;
float area(int b,int h);
float base(int a, int h);
float altura(int a,int b);
main(void)
{
printf("EJERCICIOS DE LOS TRIÁNGULOS ........  \n");
printf("============================ \n\n\n");
printf("1  para calcular el área de un triángulo \n");
printf("2  para calcular la base \n");
printf("3  para calcular la altura \n\n");
printf("ingrese una opcion ........   ");
scanf("%d",&operacion);
switch(operacion)
{
float a,b,h;
case 1:
 printf("AREA DEL TRIÁNGULO    \n");
 printf("ingrese la base ........   ");
 scanf("%f",&b);
 printf("ingrese la altura ........   ");
 scanf("%f",&h);
 printf("%f",area(b,h));
 break;

case 2:     
 printf("AREA DEL TRIÁNGULO    \n");
 printf("ingrese el area ........   ");
 scanf("%f",&a);
 printf("ingrese la altura ........   ");
 scanf("%f",&h);
 printf("%f",base(a,h));
 break;

case 3:
 printf("AREA DEL TRIÁNGULO    \n");
 printf("ingrese el area ........   ");
 scanf("%f",&a);
 printf("ingrese la base ........   ");
 scanf("%f",&b);
 printf("%f",altura(a,b));
 break;

default:
 printf(" nada mas ........   ");
}

}

float area(int b,int h)
{return b*h/2;}

float base(int a, int h)
{return 2*a/h;}

float altura(int a,int b)
{return 2*a/b;}

Capítulo anterior - Funciones y procedimientos
Recibe nuestras novedades
Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Hay 12 opiniones. Opina sobre este curso.


Cursos similares a Algoritmos y lenguaje C


Cursos Valoración Alumnos Vídeo
Creación de un microrobot
Este es un robot muy sencillo pensado para aquellos que se quieren iniciar en el mundo de la microbótica. La estructura mecánica está realizada con piezas de Lego y como ... [25/02/05]
5/5 8.057  
Programación estructurada (primera parte)
Aprende, en el mundo de la informática, la programación estructurada: en qué consiste y cuál es su justificación. Analizaremos la visión clásica de la programación estruc... [16/10/08]
4/5 1.390  
PHP y MySQL. Aplicaciones Web: HTML II (tercera parte)
Programación de aplicaciones Web con PHP y MySQL. Ahora continuaremos con el estudio de las páginas Web HTML. Estudiaremos las listas en HTML. ... [02/12/08]
5/5 711  


Publicar en   del.icio.us    digg    meneame

¿Qué es mailxmail.com?|ISSN: 1699-4914|Recomiéndanos|Ayuda
Condiciones legales de mailxmail