【发布时间】:2012-02-21 10:41:57
【问题描述】:
我需要一种算法来确定一个数组是否包含两个元素之和为给定整数的元素。
数组已排序。
算法应该是递归的并且在O(n)中运行。
递归步骤应该基于总和,这意味着该方法通过总和并根据最终结果返回真或假(如果找到两个元素 - 返回真,否则 - 返回假)
只能使用线性数据结构。
任何想法都值得赞赏..
【问题讨论】:
-
@akf:我想出了一个非递归方法,但我不明白如何将其转换为递归方法。非递归方法如下: 1. 创建两个变量 sum,start 和 end,start=数组的第一个元素,end=数组的最后一个元素... 2. sum=Array[start]+Array[ end]... 3. if (sum>k) 其中 k 是给定的整数,则递减 end... 4. else if (sum
-
现在您应该将步骤 3 和 4 转换为函数的递归调用,返回值将与返回的递归调用相同。