函数模型
参考:http://composingprograms.com/pages/16-higher-order-functions.html
下面是一个函数的模版,意思是我们要求黄金数,大概是1.6,但是我们先随便猜一个数,如果这个数不满足close的条件,就update这个数,直到满足close的条件
def improve(update, close, guess=1):
while not close(guess):
guess = update(guess)
return guess
完整的代码如下
# -*- coding : utf-8 -*-
def improve(update, close, guess=1):
while not close(guess):
guess = update(guess)
return guess
def golden_update(guess):
return 1 / guess + 1
def square_close_to_successor(guess):
return approx_eq(guess * guess, guess + 1)
def approx_eq(x, y, tolerance=1e-15):
return abs(x - y) < tolerance
golden_number = improve(golden_update, square_close_to_successor)
print(golden_number)
输出:
1.6180339887498951