@wjw_fix: 完全重构,并重新采用非递归方式实现.