1.递归
- 啥是递归
- 相当于函数调用自身
- 对栈操作频繁,很消耗时间、空间
- 注意:
- 很危险:如果忘记返回,将会报错
- 怎么调用自身,且有正确返回?
1. def factorial(n) 2. if n == 1: 3. return 1 4. else: 5. return n * factorial(n - 1) 6. 7. 以上是一个计算阶乘的例子
def factorial(n)
if n == 1:
return 1
else:
return n * factorial(n - 1)
以上是一个计算阶乘的例子
1. def fab(n): 2. if n < 1: 3. print("输入有误!") 4. return -1 5. if n ==1 or n == 2: 6. return 1 7. else: 8. return fab(n--1) + fab(n-2) 9. 10. result = fab(12) 11. if result != -1: 12. print(result)
如:汉诺塔解法
1. def hanoi(n, x, y, z) 2. if n == 1: 3. print(x, '-->', z) 4. else: 5. hanoi(n-1, x, z, y) # 将n-1个盘子从x移动到y上 6. print(x, '-->', z) # 将最底下的最后一个盘子从x移动到z上 7. hanoi(n-1, y, x, z) # 将y上的n-1个盘子移动到z上 8. 9. n = int(input("请输入汉诺塔层数:")) 10. hanoi(n, 'X', 'Y', 'Z')
2.异常处理
python标准异常
表 python常见标准异常
异常层次结构
- BaseException
- SystemExit
- KeyboardInterrupt
- GeneratorExit
- Exception
- StopIteration
- ArithmeticError
- FloatingPointError
- OverflowError
- ZeroDivisionError
- AssertionError
- AttributeError
- BufferError
- EOFError
- ImportError
- LookupError
- IndexError
- KeyError
- MemoryError
- NameError
- UnboundLocalError
- OSError
- BlockingIOError
- ChildProcessError
- ConnectionError
- BrokenPipeError
- ConnectionAbortedError
- ConnectionRefusedError
- ConnectionResetError
- FileExistsError
- FileNotFoundError
- InterruptedError
- IsADirectoryError
- NotADirectoryError
- PermissionError
- ProcessLookupError
- TimeoutError
- ReferenceError
- RuntimeError
- NotImplementedError
- SyntaxError
- IndentationError
- TabError
- SystemError
- TypeError
- ValueError
- UnicodeError
- UnicodeDecodeError
- UnicodeEncodeError
- UnicodeTranslateError
- Warning
- DeprecationWarning
- PendingDeprecationWarning
- RuntimeWarning
- SyntaxWarning
- UserWarning
- FutureWarning
- ImportWarning
- UnicodeWarning
- BytesWarning
- ResourceWarning
#### 异常检测与处理
- try-except语句
- 检测到异常后,不会运行接下来的程序了
- try-finally语句
- raise语句
- 自己引发异常
- raise testerror(‘此为异常解释内容’)