题目:写一个程序PrintN,使得传入一个正整数为N的参数后,能依次打印出从1到N 的全部正整数。
方法一:(循环)
1 #include <stdio.h> 2 3 int PrintN(int N){ 4 5 for(int i=1;i<=N;i++){ 6 printf("%d ",i); 7 } 8 } 9 10 void main(){ 11 int N; 12 scanf("%d",&N); 13 N=PrintN(N); 14 }
方法二(递归):
1 #include <stdio.h> 2 3 int PrintN(int N){ 4 if(N){ 5 PrintN(N-1); 6 printf("%d ",N);} 7 } 8 9 void main(){ 10 int N; 11 scanf("%d",&N); 12 N=PrintN(N); 13 }
在循环和递归都能执行小数据的情况下,测试成功!
当:
输入的数据为100 0000时,递归算法 非正常终止!
测试如下:
(一)循环为test,编译器为OPEN:
输入100 0000,测试为:
测试成功!
(二)递归为test1,编译器为OPEN1:
测试失败!
综上:递归相对于循环来说,占用空间大,对于大的数据将出现非正常终止的情况!