算法定义为一组有限的指令,如果遵循这些指令,它们将执行特定的任务。所有算法必须满足以下条件
输入。一种算法具有零个或多个输入,这些输入是从一组指定的对象中获取或收集的。
输出。一种算法具有一个或多个与输入具有特定关系的输出。
确定性。必须明确定义每个步骤;每条指令必须清晰明确。
有限。该算法必须始终在有限数量的步骤后完成或终止。
效力。要完成的所有操作必须足够基本,以使它们可以精确且以有限的长度进行。
我们可以通过多种方式描述算法。
自然语言:采用英语等自然语言
流程图:仅在算法小而简单的情况下,图形表示才表示流程图。
伪代码:此伪代码会跳过大多数歧义问题;关于语法编程语言没有特殊性。
示例1:用于计算数字的阶乘值的算法
Step 1: a number n is inputted Step 2: variable final is set as 1 Step 3: final<= final * n Step 4: decrease n Step 5: verify if n is equal to 0 Step 6: if n is equal to zero, goto step 8 (break out of loop) Step 7: else goto step 3 Step 8: the result final is printed
递归算法调用自身,通常将返回值作为参数再次传递给算法。此参数表示输入,而返回值表示输出。
递归算法定义为一种简化方法,可将问题分为性质相同的子问题。一次递归的结果被视为下一次递归的输入。补充是以自相似的方式进行的。该算法以较小的输入值调用自身,并通过简单地对这些较小的值完成运算来获得结果。阶乘斐波那契数列的生成表示为递归算法的示例。
示例:使用递归编写阶乘函数
intfactorialA(int n) { return n * factorialA(n-1); }