C--循环实现和递归实现的比较

mac2022-06-30  20

题目:写一个程序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\n",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",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:

测试失败!

 

综上:递归相对于循环来说,占用空间大,对于大的数据将出现非正常终止的情况!

转载于:https://www.cnblogs.com/Catherinezhilin/p/8570059.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)