
26 Fev
2012
26 Fev
'12
23:54
Mauro, Por isso eu escrevi que não havia testado os códigos. Se vc quiser testar a função, tente com factorial = function(x){ stopifnot(x>=0) produto=1 if (x>1) for (i in 1:x) produto = i* produto produto } Sobre o stopifnot, leia o manual da função para entender o uso da função. b On Monday, 27 February 2012, Mauro Sznelwar wrote: > ** > 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? > > f2 <- function(x){ > stopifnot(x>=0) > if(x<=1){ > 1 > }else{ > x*f2(x-1) > } > } > > > 2012/2/26 Mauricio Cardeal <mcardeal2010@gmail.com <javascript:_e({}, > 'cvml', 'mcardeal2010@gmail.com');>>: > > Benilton, por curiosidade testei os códigos e o primeiro funcionou certo, > > mas o segundo acusou erro: > > > >> factorial = function(x){ > > + stopifnot(x>=0) > > + produto=1 > > + for (i in 1:x) produto = i* produto > > + produto > > + } > >> factorial(3) > > [1] 6 > >> f2 = function(x){ > > + stopifnot(x>=0) > > + If(x<=1){ > > Erro: '{' inesperado em: > > " stopifnot(x>=0) > > If(x<=1){" > >> 1 > > [1] 1 > >> }else{ > > Erro: '}' inesperado em " }" > >> x*f2(x-1) > > Erro: objeto 'x' não encontrado > >> } > > Erro: '}' inesperado em " }" > >> } > > Erro: '}' inesperado em "}" > >> > > > > Mauricio Cardeal > > > > UFBA > > >