永发信息网

pascal 递归 求100+97+„„+10+7+4+1之和

答案:1  悬赏:40  手机版
解决时间 2021-04-02 22:34
pascal 递归 求100+97+„„+10+7+4+1之和
最佳答案
function sum(s:longint):longint;
begin
 if s=1 then exit(1);
 exit(s+sum(s-3));
end;
begin
 writeln(sum(100));
 readln;
end.


或者可以在附件中下载.pas文件。
      不过,如果LZ有志参加竞赛,一定别用递归做这种题,可以试试,这样一道简单的题都会运行很长时间。因为free pascal调用函数和过程是很费时间的。


如果真要编程,可以用递推、循环或数学公式(等差数列求和)。

追问function dg ( m : integer ) : integer ;
begin
if m <= 3 then dg := m else
dg := dg + dg ( m - 3 ) ;
end ;
这有什么错 ?
你的程序的exit ( ...... ) 是什么意思追答exit 中文就是“退出”之类的,在pascal中,就表示“退出调用函数”,在当前的函数中,之后的语句都不执行,直接退出函数,进入主程序。
而如果是 exit( ) 这种形式,就是“先让函数值赋值为括号内的数,再退出函数”。

比如:
var a,b:integer;

function judge(a,b:integer):boolean;
begin
if a=b then exit(true);
exit(false);
end;

begin
readln(a,b);
if judge(a,b) then write('YES')
else write('NO');
end.

输入 :2 2
输出 :YES

在调用函数 judge 时,执行到这一句:
if a=b then exit(true);
a确实等于b,因此judge函数就返回一个 true 值,并直接退出函数,而不执行
exit(false);
这句。

——————————————————————————-——————————
你的代码有大问题。
function dg(m:integer):integer;
begin
if m<=3 then dg:=m
else dg:=dg+dg(m-3); //这句语句不对,应该是 dg:=m+dg(m-3);
end;
一个小错就可能导致结果完全不对,原先的输出是-8532,而正确输出是1717.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
i5 7500建议带个什么显卡?
、男网友问女网友想我没为什么
巴特勒加盟湖人谁感觉不爽?
右边身体麻木怎么回事
办了张透支额度5000元农行苏通卡,之后去加油
求TVB剧学警系列《学警雄心》《学警出更》《
怎样目测女人的三围和分辨女人的罩杯?
68年阳历1月27号出生的人的命运
男的送帽子给我,什么意思?
Word文档中,标题1,标题2怎么区分?
如果将国外的论文翻译成中文会被查重发现吗?
有谁人知道此壶作者范亚萍是那个年代人?
点三军打一个数字
私立大专学校是只要交钱就能上吗?
大家有没有看过一个耽美小说,攻有4个,小受
推荐资讯
LG47寸电视机一套整流器元件要多少钱
金属非金属矿山主要负责人和安全管理人员复审
鼻子擤鼻涕特别干可以涂点绵羊油吗
阴阳师4星麒麟怎么打阴阳师4星麒麟开荒攻略
力帆620原车是导航现在想装cd可以不
见鬼的玛丽苏txt百度云
大家觉得布冯好点,还是切赫厉害些??
单选题Thepicture________methinkofmy
38/85C的内衣胸围是多少cm
壹和古筝底板上刻的是什么字啊
历史上蒋孔宋陈四大家族分别指?
19x9分之4的简便方法
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?