Mauro,
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>:
> 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
>