我试图在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,因此代码可能很垃圾,并且没有获得大量信息可供使用,所以任何有用的东西都会很乐意接受。
非常感谢
答案 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;
上面的第二种方法效率最低,因为它会重复计算阶乘,而不会重复使用。第三种方法是递归的。