http://mooc.study.163.com/learn/1000033001?tid=1000044001#/learn/content?type=detail&id=1000112002&cid=1000099015
例2:写程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从一到N的全部正整数。
(1)通过循环
1 #include<stdio.h> 2 void PrintN(int N); 3 int main() 4 { 5 int N; 6 scanf("%d", &N); 7 PrintN(N); 8 } 9 void PrintN(int N) { 10 int i; 11 for(i=1;i<=N;i++){ 12 printf("%d\n",i); 13 } 14 return; 15 16 17 }
(2)通过递归
#include<stdio.h> void PrintN(int N); int main() { int N; scanf("%d", &N); PrintN(N); } void PrintN(int N) { if(N){ PrintN(N-1); printf("%d\n",N); } return; }
在做打印运算时,对递归100000,系统罢工---
递归:
一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法;
递归函数就是直接或间接调用自身的函数,也就是自身调用自己
递归算法效率较低,占用栈空间较大,容易发生栈溢出.
递归分为2种,直接递归和间接递归。
直接递归,比如方法A内部调用方法A自身
间接递归,比如方法A内部调用方法B,方法B内部调用方法C,方法C内部调用方法A
(Java递归 )
1 import java.util.Scanner; 2 3 public class Main { 4 5 public static void printN (long N) 6 { 7 if(N!=0) 8 {printN(N-1);} 9 System.out.println(N); 10 } 11 12 public static void main(String[] args) 13 { 14 Scanner in = new Scanner(System.in); 15 long i =in.nextInt(); 16 printN(i); 17 } 18 19 }