算法基本概念

一 算法复杂度

同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度空间复杂度来考虑。

空间复杂度:

空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序时间复杂度是O(n^2),空间复杂度是O(1) 。而一般的递归算法就要有O(n)的空间复杂度了,因为每次递归都要存储返回信息。

二 递归

def foo(x):
    if x == 1:
        print('foo')
    else:
        foo(x-1)
        print(x)

def bar(x):
    if x == 1:
        print('bar')
    else:
        print(x)
        bar(x-1)


foo(4)
print('='*20)
bar(4)

感受下输出结果

foo
2
3
4
====================
4
3
2
bar

不难理解,递归的是foo或bar,但是常规的前面后面的该执行的还是要执行的呀。

用一个盒子模型,就很明了了。

  

 

 

  所以,如果想输入xxxxxxxxxhello,worldooooooooo,类似这样的效果,用递归,可以这样写。

def foo(n):
    if n == 0:
        print('hello,world',end='')
    else:
        print('xx',end='')
        foo(n-1)
        print('oo',end='')
foo(4)

  输出:

xxxxxxxxhello,worldoooooooo

 

posted @ 2018-01-31 19:36  骑者赶路  阅读(126)  评论(0编辑  收藏  举报