上QQ阅读APP看书,第一时间看更新
2.1.1 算法的特性
算法是为解决某一特定类型的问题而制定的一个实现过程,它具有下列特性。
(1)有穷性。
一个算法必须在执行有穷步之后结束,且每一步都可在有穷时间内完成,不能无限地执行下去。如要编写一个由小到大整数累加的程序,就需要给出整数的上限,也就是加到哪个数为止。若没有上限,那么程序将无终止地运行下去,进入死循环。
(2)确定性。
算法的每一个步骤都应当有确切定义,每一个过程都不能有二义性,必须对将要执行的每个动作做出严格而清楚的规定。
(3)可行性。
算法中的每一步都应当能有效地运行,也就是说算法是可执行的,并能够最终得到正确的结果。
例如,下面的代码中,“z=x/y;”是一个无效语句,因为0不可以做分母。
int x,y,z; scanf("%d,%d,%d",&x,&y,&z); if(y==0) z=x/y;
(4)有零个或多个输入。
一个算法应有零个或多个输入。输入就是执行算法时需要从外界取得的一些必要的(如算法所需的初始量等)信息。例如,下面的代码中有3个输入。
int a,b,c; scanf("%d,%d,%d",&a,&b,&c);
下面的代码中需要零个输入。
main() { printf("hello world!"); }
(5)有一个或多个输出。
一个算法应有一个或多个输出。什么是输出?输出就是算法最终所求的结果。编写程序的目的就是要得到一个结果,如果一个程序运行下来没有任何结果,那么这个程序本身也就失去了意义。
误区警示
需要注意的是,一个程序可能存在输入,也可能不存在输入,但一定存在输出。也就是说,至少存在一个输出。