在谈论算法时,我经常遇到这些术语。
特殊情况
基本案例
边缘保护套
它们都一样吗?或两者之间有什么显着差异?
答案 0 :(得分:2)
“平凡的情况”是一种简单的有限算法仍然可以解决的情况。例如,在您需要对数字列表进行排序但已经对其进行排序的情况下。
通常与递归有关使用“基本案例”,它是指直接处理而没有任何进一步递归的案例。例如,快速排序单个元素。 (基本情况通常也很少。)
“边缘情况”是在某种程度上不常见的情况,无法通过适用于大多数情况的逻辑来正确处理,或者导致特别糟糕的性能或结果。例如,对所有元素都相等的数组进行快速排序,就不可能选择有效的枢轴。
答案 1 :(得分:1)
下面我们讨论一下阶乘算法
factorial (n) = n * factorial (n - 1) if n > 0
= 1 if n is 0
= error if n < 1
小写情况:如果算法是理智的,简单的情况应该通过。 (类似于烟雾测试)通常可以在头脑中或用笔和纸计算出来。示例factorial(3)或factorial(5)
基本情况:算法收敛到的递归终止条件。在这种情况下,n为0。
边缘情况:由于语言限制(变量溢出,被零除等)而算法可能给出错误答案的情况,或者期望算法温和地报告错误而不是崩溃的情况。