12 Ago 2008 21:09
int fatorial(int num){
if(num == 0) // linha 1
return 1; // linha 2
return num*fatorial(num -1); // linha 3
}
A recursividade pode ser vista como funções que chamam a si mesmas. Assim um algoritmo é recursivo se a função que descreve o algoritmo chama a si própria, em algum local dessa função.
? fatorial(0)
? fatorial(2)
function fatorial(num)
if (num == 0)
return 1
endif
return num*fatorial2(num -1)
3.2 Estrutura de decisão simples (if)
Na Seleção Simples, uma instrução ou um conjunto de instruções é executado somente se o teste condicional especificado retornar o valor verdadeiro. Caso o resultado do teste seja falso, nenhuma das instruções delimitadas pela estrutura de seleção será executada e a execução das instruções será desviada para a instrução imediatamente seguinte à estrutura de seleção.
12 Ago 2008 23:17
Na minha opinião, esse código estaria faltando-lhe um "else" entre as linhas 2 e 3, no entanto este procedimento
if (num == 0)
return 1;
if (num == 0) return 1;
if (num == 0) {
return 1;
}
if (!num) return 1;
if (0 == num) return 1;
int Fatorial(int Num) return Num? Num*Fatorial(Num-1): 1;
12 Ago 2008 23:35
Aqui falou tudo o que eu precisava saber. Pois este conceito é somente para estrutura de decisão simples. Agradeço o complemento dos seus comentários, com certeza me ajudaram a esclarecer melhor o tema. Pois eu estava ainda na dúvida, pois como toda linha tem que ser finalizada com ";" pensei que isso não fazia o fechamento do comando. Acostumado a ver o IF(<condição>,<faça tal>) o que não é igual ao do Clipper.O comando começa após o if() e termina com um ponto-e-vírgula.
13 Ago 2008 12:33
27 Set 2008 15:06
int Fatorial(int Num) { return Num? Num*Fatorial(Num-1): 1; }
28 Set 2008 10:29
28 Set 2008 12:30
14 Jun 2013 11:52
function main()
? fatorial(5)
return nil
function fatorial(num)
if (num == 0)
return 1
else
return num*fatorial(num -1)
endif
return nil
14 Jun 2013 19:04
//------------------------------------------------------------------------------------------------------
/***
* PrintArray(aR, cTitle)
*
* aR[] - -Array to print
* cTitle - -The heading
*
* Recursive routine to print an array
*/
FUNCTION PrintArray(aR, cTitle)
LOCAL i := 0, cHeading
// Step through every array element. If the element is
// itself an array, recurse to print the subarray,
// just print the element name and subscript.
AEval(aR, { |elem| ;
i++, ;
cHeading := cTitle + "[" + Ltrim(Str(i)) + "]", ;
Iif(ValType(elem) = "A", PrintArray(elem, cHeading), Qout(cHeading, elem)) } )
RETURN NIL
//------------------------------------------------------------------------------------------------------
14 Jun 2013 23:07