recursividad

Ivan
21 de Julio del 2003
tengo que realizar un programa que me compruebe si un valor x es igual a la suma de las componentes de un vector a[1..n] con n>0 de forma recursiva. ¿Como se hace?

webJose
21 de Julio del 2003
Creo que lo que usted necesita es algo como esto. Pruébelo a ver si "la pegué" :-).

Function SumaVector(vector() as long, byval final as long) as long

dim inicio as long

inicio = lbound(vector)
if (inicio = final) then
SumaVector = vector(inicio)
else
SumaVector = vector(final) + SumaVector(vector, final - 1)
end if

end function

Sub Main()

dim valor as string
dim vecValores() as long

Redim vecValores(1 to 10)
'Poner código aquí para llenado del vector
....
valor=inputbox("Digite el valor a comparar.");
if (valor = "")then
exit sub
endif

if not(isnumeric(valor))then
msgbox "El valor digitado no es reconocido como un número.", vbexclamation
exit sub
endif

if (SumaVector(vecValores, ubound(vecvalores)) = clng(valor)) then
msgbox "La suma del vector y el valor digitado concuerdan.", vbinformation
else
msgbox "La suma del vector y el valor digitado no concuerdan.", vbcritical
end if

end sub

webJose
21 de Julio del 2003
Disculpe, pensé que estaba en el foro de Visual Basic. :(

En un momento le propongo el código... no soy tan diestro en C++ como en VB.

webJose
21 de Julio del 2003
A ver si ahora sí. Tal vez algo como esto?

#include <iostream.h>

int SumarVector(int vector[], int final)
{
if (0 == final)
{
return vector[0];
}
else
{
return (vector[final] + SumarVector(vector, final - 1));
}
}

int main(int argc, char* argv[])
{
int vecValores[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int iValor = 0;

cout << "Digite un número: ";
cin >> iValor;
if (SumarVector(vecValores, 10) == iValor)
{
cout << "El valor digitado concuerda con la suma del vector.n";
}
else
{
cout << "El valor digitado no concuerda con la suma del vector.n";
}
return 0;
}

webJose
21 de Julio del 2003
Hay un error. La línea que dice:

if (SumarVector(vecValores, 10) == iValor)

debería decir

if (SumarVector(vecValores, 9) == iValor)