[理工] 资结 求执行次数

楼主: bmpss92196 (bmpss92196)   2018-07-27 18:16:26
想请问此题
for i=1 to n do
{
x=n;
while(x>=0) do
{
x=x-i;
a++;
}
}
问a++执行次数
Ans
x=n x=n-i x=n-2i ... x=n-ki=0会执行 => k=n/i
想请问为什么最后可以直接写x=n-ki=0?
若n=5则第二轮(i=2)时不会有x=0的情况
谢谢
作者: godskull1535 (骷骷)   2018-07-27 20:43:00
nlognx=n-ki n-ki=0 k=n/i里面while就n/i 外面for搭配Σ(n/i) 再把n提出来 然后Σ (1/i)=logn 所以就nlogn了你假设n=5,i=1 x=n 执行5次 变到i=2 x又会等于5,又会执行5次但现在是n要知道x=n 在看while(x>0) 代表x=0 while才跳出来所以里面的x=x-i 会减到x-ki(减了k次)等于0为止才跳出 先知道里面的循环跑几次后在往外面展开 比较好算有打错 假设n=5 i=2时 会减到-1为止才跳出 我觉得不用想太多 题目要求是x=0跳出 现在假设是n 就会n-ki=0

Links booklink

Contact Us: admin [ a t ] ucptt.com