A-A+

写出下面算法中带标号语句的频度。 TYPE ar=ARRAY[-1…n]OF datatyp

2022-08-12 16:54:18 问答库 阅读 197 次

问题详情

写出下面算法中带标号语句的频度。 TYPE ar=ARRAY[-1…n]OF datatype; PROCEDURE perm (a:ar;k,n:integer); VAR x:datatype;i:integer; BEGIN (1)IF k=n THEN BEGIN (2)FOR i:=1 TO n DO (3)write (a[i]); writen; END ELSE BEGIN (4)FOR i:=k TO n DO (5)a[i]:=a[i]+i*i; (6)perm(a,k+1,n); END END 设k的初值等于1。


请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:(1)n (2)n+1 (3)n (4)(n+4)(n-1)/2 (5)(n+2)(n-1)/2 (6)n-1
这是一个递归调用,因k的初值为1,由语句(6)知,每次调用k增1,故第(1)语句执行n次。(2)是FOR循环语句,在满足(1)的条件下执行,该语句进入循环体(3)n次,加上最后一次判断出界,故执行了n+1次。(4)也是循环语句,当k=1时判断n+1次(进入循环体(5)n次),k=2时判断n次,最后一次k=n-1时判断3次,故执行次数是(n+1)+n+…+3=(n+4)(n-1)/2次。语句(5)是(4)的循环体,每次比(4)少一次判断,故执行次数是n+(n-1)+…+2=(n+2)(n-1)/2次。注意分析时,不要把(2)分析成n次,更不是1次。

考点:频度,标号