Script TCL para demostrar procedimientos recursivos

En este artículo, veremos un conjunto único de procedimientos TCL que se llaman a sí mismos. Estos procedimientos, como ya habrás adivinado, se denominan procedimientos recursivos. Estas son similares a las funciones recursivas en otros lenguajes. Por lo tanto, para comprenderlos aún mejor, consideraremos el mismo procedimiento escrito como una función recursiva en la programación C para comprender aún mejor la sintaxis.

Requisito previo:
si desea saber más sobre TCL, lea amablemente los siguientes artículos de la siguiente manera.

Ejemplo:
consideraremos un ejemplo simple en el que nuestro objetivo es encontrar la suma de n números naturales llamando recursivamente a sumofnnumbers {} . Entendamos este código en bloques.

Paso-1: 
Nuestro primer paso es definir un procedimiento que se llame a sí mismo hasta n=1. Usamos la palabra clave proc para definir un procedimiento. Antes de hacerlo, consideremos cómo se vería un procedimiento regular para encontrar la suma de n números naturales.

proc sumofnnumbers {a} {
 set sum 0
 for {set i $a} {$i>=1} {incr i -1} {
    set sum [expr $sum+$i]
 }
 return $sum
}

Como puede ver arriba, definimos el procedimiento usando el bucle for convencional . Y, por supuesto, podemos contar del 1 al n o del n al 1. En este caso, hemos contado del n al 1.

Paso 2: 
podemos lograr el mismo procedimiento que se muestra arriba con un procedimiento recursivo que se llama a sí mismo hasta n = 1 y logra una funcionalidad similar a una declaración de bucle convencional. 

proc sumofnnumbers {a} {
if {$a>0} {
  return [expr $a+[sumofnnumbers [expr $a-1]]]
} else {
  return 0
}
}

Nota :

  • La sintaxis de un procedimiento debe ser exactamente como se muestra arriba. Si descuida los espacios o abre la llave en una nueva línea, el resultado será un error.
  • El mismo procedimiento se puede usar para encontrar el producto de n números naturales. Todo lo que necesita hacer es reemplazar ‘+’ con ‘*’ y devolver 1 en lugar de 0 en el bloque else.

Paso 3: 
comparemos el mismo bloque de código con el aspecto que tendría en lenguaje C para comprender mejor la sintaxis.

int sumofnnumbers(int a)
{
if(a>0)
 {
   return a+sumofnnumbers(a-1);
 }
else
 {
   return 0;
 }
}

Paso 4: 
el siguiente paso es solicitar al usuario que ingrese un número y lo pase como argumento al procedimiento: sumofnnumbers {} . Usamos gets para recibir información del usuario.

puts "Enter the number"
gets stdin a
puts "The sum of $a numbers is [sumofnnumbers $a]"

Paso 5: 
el código completo con la salida es el siguiente.

Código –

proc sumofnnumbers {a} {
if {$a>0} {
  return [expr $a+[sumofnnumbers [expr $a-1]]]
} else {
  return 0
}
}
puts "Enter the number"
gets stdin a
puts "The sum of $a numbers is [sumofnnumbers $a]"

Producción :

Publicación traducida automáticamente

Artículo escrito por zyeshwanth 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 *