用编程语言编程实现一个数学问题,并输出结果。

当p<q或q≤0时,S(p, q) = 0;当p=q或q=1时,S(p, q) = 1。当p>q且q>1时
S(p,q)=S(p-1,q-1)+qS(p-1,q)
例如:S(4, 2)=S(3, 1)+2S(3, 2)=1+2(S(2, 1)+2S(2, 2)) = 7.
要实现我输入任意p,q的值,可以输出S(p,q)的值

用pascal

var x,y:longint;

function s(p,q:longint):longint;

begin

 if (p<q) or (q<=0) then

 s:=0

 else if (p=q) or (q=1) then

 s:=1

 else if (p>q) and (q>1) then

 s:=s(p-1,q-1)+q*s(p-1,q);

 exit(s);

end;

begin

 readln(x,y);

 writeln(s(x,y));

end.

如果PASCAL看不懂,这里有也我写的C++代码

主要就是递归,函数嵌套,选择结构

看在我打了半天代码,希望你能采纳我,谢谢

也希望对你有帮助

追问

能把输出结果截个图给我吗?当p=30,q=20时的结果。谢谢

追答

抱歉昨晚不在

p=30,q=20时,结果很大,所以要改一下数据范围,pascal把定义的longint改为int64,即可,C++改成long long.

不懂的话追问我

你要的截图

追问

可以加一下我的q吗 2878454304。我可以给你3倍的财富值,谢谢

追答

已加,请求审核

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答