northwolves 发表于 2011-1-27 08:40:18

Pari语法

请教PARI语法:
定义了一个函数,为何输出都是1:

s(a,b,c)=if(a=1,1,if(b=0,if(c=0,s(a-1,0,0)+s(a-1,0,1),s(a-1,0,0)),if(c=0,s(a-1,b,0)+s(a-1,b,1),s(a-1,b-1,1)+s(a-1,b-1,0))))

mathe 发表于 2011-1-27 15:17:02

请教PARI语法:
定义了一个函数,为何输出都是1:

s(a,b,c)=if(a==1,1,if(b==0,if(c==0,s(a-1,0,0)+s(a-1,0,1),s(a-1,0,0)),if(c==0,s(a-1,b,0)+s(a-1,b,1),s(a-1,b-1,1)+s(a-1,b-1,0))))
northwolves 发表于 2011-1-27 08:40 http://bbs.emath.ac.cn/images/common/back.gif

northwolves 发表于 2011-1-27 16:20:14

还是不对。不能这样递归?

***   deep recursion: if(a==1,1,if(b==0,if
                        ^--------------------

但这样递归是可以的:

(16:19) gp > f(n)=if(n<2,1,n*f(n-1))
(16:19) gp > f(10)
%2 = 3628800

mathe 发表于 2011-1-27 16:30:25

这种复杂的递归不仅仅效率低,还容易引起堆栈溢出。
自己开三维数组然后动态规划比较好
页: [1]
查看完整版本: Pari语法