算法规范-数据结构介绍

算法定义为一组有限的指令,如果遵循这些指令,它们将执行特定的任务。所有算法必须满足以下条件

输入。一种算法具有零个或多个输入,这些输入是从一组指定的对象中获取或收集的。

输出。一种算法具有一个或多个与输入具有特定关系的输出。

确定性。必须明确定义每个步骤;每条指令必须清晰明确。

有限。该算法必须始终在有限数量的步骤后完成或终止。

效力。要完成的所有操作必须足够基本,以使它们可以精确且以有限的长度进行。

我们可以通过多种方式描述算法。

  • 自然语言:采用英语等自然语言

  • 流程图:仅在算法小而简单的情况下,图形表示才表示流程图。

  • 伪代码:此伪代码会跳过大多数歧义问题;关于语法编程语言没有特殊性。

示例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);
}