求数组的子数组之和的最大值

——尾递归的应用这是《编程之美》中2.14节提出的一个问题,问题的描述为一个有N个整数元素的一维数组(A[0], A[1], …, A[n-2], A[n-1]),这个数组有很多子数组,那么子数组之和的最大值是什么?以往遇到这种问题的第一种思维模式也像书中的第一种解法一样去枚举出所有的子数组,对每个子数组内部元素求和,然后找出所有和中最大的。这是一种分解问题的思路,但所分解的子问题已经 … 继续阅读

尾递归的启示

——读《计算机程序的构造和解释》第一章第二小节所想尾递归是指在过程调用中,递归调用过程本身的操作始终是过程的最后一步。举例来讲,计算阶乘的方法,根据定义,直接翻译成递归形式为def factorial(n):  if n == 1:    return 1  else:    return n * factorial(n-1)这个递归中,最后一步操作是乘法,而非调用过程本身,因而不是尾递归。转换成 … 继续阅读