ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言第七章函数递归

2019-06-29 15:27:13  阅读:211  来源: 互联网

标签:调用 递归 dg void C语言 第七章 printf jc


函数递归

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

//函数声明 
void diguifunc();
void qtfunc1();
void qtfunc2();
void qtfunc3();
int dg_jc();
int main(int argc, char *argv[]) {
	
	//函数的递归调用 
	diguifunc();
	
	//调用栈:(一块系统分配给咱们这个程序有特殊用途的内存)把形式参数 函数调用关系 局部变量 
	//这段内存是有限的 一旦超过了这个这个内存大小 就会出现崩溃现象
	
	//因为这种递归调用产生死循环问题 所以这种自己调用自己的方式 必须要有一个出口,这个出口也叫递归结束条件 
	
	//递归调用的出口范例
	//计算5的阶乘:5! 出口肯定是1!
	//dg_jc(5) = dg_jc(4)*5 递归-- 
 	//dg_jc(4) = dg_jc(3)*4  
 	//dg_jc(3) = dg_jc(2)*3
 	//dg_jc(2) = dg_jc(1)*2
 	//dg_jc(1) = 1; 这里是出口条件
 	dg_jc(5);
	//递归优缺点:
	//优点:
	//代码少,代码看起来简洁,精妙 
	//虽然简洁 但是不好理解
	//层次太深的话 调用栈(内存)太深 可能回溢出 出现这种情况下 那么说明不能用递归解决该问题
	
	//有些问题用不用递归都行 
	//有些是必须的://汉诺塔 
	
	//递归的直接或者间接调用:
	//递归函数直接调用:
	//调用递归:函数的f的过程 f函数有调用自己 这就是直接调用
	//间接调用:调用函数f1的过程中要调用f2函数 然后f2函数又要调用f1函数
	
	//
}
//递归函数:就是自己调用自己 
//执行函数将反复的调用自身 每调用自己一次就进入了一个新层 
//必须得有出口:就是递归的结束条件
void diguifunc(){
 	
	printf("This is diguifunction\n"); 
	int a = dg_jc(5); 
 	printf("%d\n",a);
	
}
//范例:
//n! 用递归函数代码 
int dg_jc(int n){
	
	int result;//保存结果 
	if(n == 1){
		return 1; //递归调用的出口 
	}else{
		result =  dg_jc(n-1) * n;
	}
    return result;		
}
//函数定义 
void qtfunc1(){
	int temp = 150; //局部变量:在函数内部定义的变量,当整个函数执行完后,局部变量所占的内存被系统自动回收 
	printf("Q1开始执行\n");
	qtfunc2();
	printf("Q1执行结束\n"); 
}
void qtfunc2(){
	printf("Q2开始执行\n");
	qtfunc3();
	printf("Q2执行结束\n"); 
} 
void qtfunc3(){
	printf("Q3开始执行\n");
	printf("Q3执行结束\n"); 
}

标签:调用,递归,dg,void,C语言,第七章,printf,jc
来源: https://blog.csdn.net/zzugsh/article/details/94052334

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有