# -*- coding: utf-8 -*- # recursion function # éå½å½æ°è®¡ç® n! = n * (n-1) * ... * 3 * 2 * 1 def factorial(n): if n == 1: return 1 # fact(n) = n * fact(n -1) return n * factorial(n - 1) print('factorial(3) =', factorial(3)) print('factorial(10) =', factorial(10)) # 使ç¨å°¾éå½ï¼ä¼åéå½å½æ°çæ æº¢åº def fact(n): return fact_iter(n, 1) # è¦å®ç°å°¾éå½ï¼return è¯å¥ä¸è½å å«è¡¨è¾¾å¼ def fact_iter(num, product): if num == 1: return product # ææ¯ä¸æ¥çä¹ç§¯ä¼ å ¥å°éå½å½æ°ä¸ return fact_iter(num - 1, num * product) print('fact(10) =', fact(10)) # æ±è¯ºå¡ # a ä¸é¢n个çåï¼åå©bï¼å ¨é¨å°çåæåæ ·çé¡ºåºæ¾å°cä¸ def move(n, a, b, c): if n == 1: # æå䏿¥é½æ¯ a--> c ï¼è¿éæ¯a-->c æ¯å½¢åï¼ print('move:', a, '-->', c) return else: # å°aä¸é¢ç n-1个 ç§»å° b ï¼ä¼åå©cï¼ move(n-1, a, c, b) # å°açæä¸é¢ä¸ä¸ªç§»å°cä¸ move(1, a, b, c) # å°bä¸çn-1个移å°cä¸ ï¼ä¼åå©aï¼ move(n-1, b, a, c) move(4, 'a', 'b', 'c')