问题描述
def f6 ( n : nat ?) :
for x in range ( n ) :
print ("*")
for i in range ( n / 10) :
for k in range (10) :
for j in range ( n / 10) :
print ("-")
-
对于第一个循环
for x in range(n)
,它将为O(n),而后三个循环将为O(N / 10 * 10 * N / 10)-> O(N ^ 2/10 ),因此总复杂度为O(N + N ^ 2/10)-> O(N + N ^ 2)def sum( start : nat ?,end : nat ?) : if start > end : return 0 if start == end : return end return ( start + sum ( start + 1,end ) )
-
因为没有循环,并且如果语句在恒定时间内完成,则复杂度为O(1)
def Fibonacci1 ( n : nat ?) : let ans = 0 let pre_ans1 = 0 let pre_ans2 = 1 for i in range (1,n + 1) : ans = pre_ans1 + pre_ans2 pre_ans2 = pre_ans1 pre_ans1 = ans return ans
-
此块中的第一个循环将增加O(N)的复杂度,并且由于没有其他循环,因此总复杂度将为O(N)
def Fibonacci2 ( n : nat ?) : if n <= 2: return 1 return ( Fibonacci2 ( n - 1) + Fibonacci2 ( n - 2) )
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)