转载自 https://www.cnblogs.com/alexanderkun/p/8098781.html 和最后函数形式化统一:https://www.jianshu.com/p/c02a1fbffad6