枫叶因子

时间:2014-11-10 14:31:33

标签: list factorial maple

我试图在Maple 12中创建一个输入" n"并输出序列1!,1中的所有数字! + 2!,1! + 2! + 3!,...等等到用户输入和一个值结束(即序列中的第一个数字大于n)。

这是我目前的代码:

 fact := proc (n);
 local i, a;
 a = 1
 i = 1
 while i < n do
 list(a) = i;
 a = a + 1
 i = b(1..(a! + list(a - 1)));
 od
 return(b)
 end

我几乎完全不熟悉Maple,因此代码可能很垃圾,并且没有获得大量信息可供使用,所以任何有用的东西都会很乐意接受。

非常感谢

1 个答案:

答案 0 :(得分:0)

以下是一些方法。

restart:

fact:=proc(n::posint)
  local i, a, b;
  a := 1;
  b[1] := 1;
  for i from 2 to n+1 do
    a := a*i;
    b[i] := b[i-1] + a;
  end do;
  return seq(b[i],i=1..n+1);
end proc: 

for k from 1 to 10 do
  fact(k);
end do;

restart:

fact2:=proc(n::posint)
  local i;
  seq(add(i!,i=1..k),k=1..n+1);
end proc:

for k from 1 to 10 do
  fact2(k);
end do;

restart:

fact3:=proc(n::posint)
  option rememeber;
  local i,t;
  if n=1 then
    return 1,3;
  else
    t:=fact3(n-1);
    return t, t[-1]+(n+1)!;
  end if;
end proc:

for k from 1 to 10 do
  fact3(k);
end do;

上面的第二种方法效率最低,因为它会重复计算阶乘,而不会重复使用。第三种方法是递归的。