Mauro,<div><br></div><div>Por isso eu escrevi que não havia testado os códigos.</div><div><br></div><div>Se vc quiser testar a função, tente com</div><div><span class="Apple-style-span" style><br></span></div><div><span class="Apple-style-span" style>factorial = function(x){</span><br>
</div><div> stopifnot(x>=0)<br> produto=1</div><div> if (x>1)<br> for (i in 1:x) produto = i* produto<br> produto<br>}</div><div><br></div><div>Sobre o stopifnot, leia o manual da função para entender o uso da função.</div>
<div><br></div><div>b<br dir="ltr"><br>On Monday, 27 February 2012, Mauro Sznelwar wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>
<div>
<div align="justify"><font face="Arial" color="#0000ff">Estava rodando os scripts e vi
que o stopifnot(x>=0) se retirado não altera nada. No caso iterativo do
factorial não funciona se fizer factorial(0)=0, como forçar para
factorial(0)=1?</font></div>
<div><font face="Arial"></font> </div>
<div><font face="Arial">f2 <- function(x){<br>
stopifnot(x>=0)<br>
if(x<=1){<br>
1<br> }else{<br>
x*f2(x-1)<br> }<br>}<br><br><br>2012/2/26 Mauricio Cardeal
<</font><a href="javascript:_e({}, 'cvml', 'mcardeal2010@gmail.com');" target="_blank"><font face="Arial">mcardeal2010@gmail.com</font></a><font face="Arial">>:<br>>
Benilton, por curiosidade testei os códigos e o primeiro funcionou
certo,<br>> mas o segundo acusou erro:<br>><br>>> factorial =
function(x){<br>> + stopifnot(x>=0)<br>> +
produto=1<br>> + for (i in 1:x) produto = i* produto<br>>
+ produto<br>> + }<br>>> factorial(3)<br>> [1]
6<br>>> f2 = function(x){<br>> + stopifnot(x>=0)<br>>
+ If(x<=1){<br>> Erro: '{' inesperado em:<br>> "
stopifnot(x>=0)<br>>
If(x<=1){"<br>>> 1<br>> [1]
1<br>>> }else{<br>> Erro: '}' inesperado em "
}"<br>>> x*f2(x-1)<br>> Erro: objeto 'x' não
encontrado<br>>> }<br>> Erro: '}' inesperado em "
}"<br>>> }<br>> Erro: '}' inesperado em "}"<br>>><br>><br>>
Mauricio Cardeal<br>><br>> UFBA<br>><br></font></div></div>
</blockquote></div>