首页 > 其他分享 >C语言递归调用子函数

C语言递归调用子函数

时间:2024-03-02 13:44:19浏览次数:24  
标签:调用 20 递归 16 int C语言 子函数 dec2hex

示例代码1:10进制转16进制

查看代码
 #include<stdio.h>
void dec2hex(int n)
{
	if(n>15)
		dec2hex(n/16);
	
	if(n%16 < 10)
			printf("%c",n%16+'0');
	else
		printf("%c", n%16+55);
	//printf("%c",n%16<10 ? n%16+'0' : n%16+55);	//小于16的数,那么就将其取模% 然后加上'0'	
}
//
int main()
{
	int n;
	scanf("%d",&n);
	dec2hex(n);
	return 0;
}

当输入20时,程序的运行状况如下:

  1. 首先,在main函数中,程序会等待用户输入一个整数,假设用户输入的是20

  2. 然后程序调用dec2hex函数,并将输入的整数20作为参数传递给dec2hex函数。

  3. dec2hex函数中,首先判断输入的数值20是否大于15。由于20大于15,所以会进行第一次递归调用,即dec2hex(20/16),即dec2hex(1)

  4. 在第一次递归调用中,dec2hex函数会继续判断1是否大于15。由于1不大于15,所以不会进行第二次递归调用。然后,程序会执行下面的代码:

    • 计算1 % 16的结果,即1
    • 由于1小于10,所以输出字符'1'
  5. 第一次递归调用结束,程序返回到之前的递归调用处继续执行未完成的代码。这是因为递归调用是通过函数调用栈来实现的,每次函数调用都会在栈中创建一个新的帧,包含函数的参数、局部变量和返回。
  6. 返回到第一次递归调用,继续执行下面的代码:

    • 计算20 % 16的结果,即4
    • 由于4小于10,所以输出字符'4'
  7. 回到main函数,dec2hex函数执行完毕,程序结束并返回0。

因此,当输入20时,最终输出结果是 14

 

示例代码2:阶乘

查看代码
#include <stdio.h>
int n,y;
int f;

int fac(int n)
{
	if(n<0)
		printf("n<0,data error!");
	else if(n==0||n==1)
		f=1;
	else 
		f=fac(n-1)*n;
	return(f);
}

int main()
{
	printf( "input an integer number:");
	scanf("%d",&n);
	y=fac(n);
		
	printf("%d!=%d\n",n,y);
	return 0;
}


	

 

当输入3时,输出6:

程序是这样fac(2)*3,然后fac(1)*2,然后计算可知fac(1)为1,。此时就倒起回去,挨个计算,最终等于6

当输入5时,输出20:

标签:调用,20,递归,16,int,C语言,子函数,dec2hex
From: https://www.cnblogs.com/YYZYCS/p/18048565

相关文章

  • 关于C语言结构体
    1.C语言的结构体struct是一个数据类型,这样理解和int,char,float等一样都是数据类型,不过这个数据类型比较特殊,它是由好几种不同的数据类型组成;如:struct{inta,charb,floatc,}Name;解释一下,结构体是数据类型,所以就要先定义在使用,这里定义了一个名为Name的结构体里面有三个数据......
  • 掌握C语言指针,轻松解锁代码高效性与灵活性(中)
    ✨✨欢迎大家来到贝蒂大讲堂✨✨......
  • 掌握字符与字符串:C语言中的神奇函数解析(三)
    ✨✨欢迎大家来到贝蒂大讲堂✨✨......
  • 240301C语言笔记
    一、数组数组里面放数据的,数组变量相当于指针int*ptr=&myArray[0];int*ptr=myArray声明数组:typearrayName[arraySize]初始化大括号获取长度sizeofintlength=sizeof(numbers)/sizeof(numbers[0]);二、内存管理:四个区:自上而下栈区先进后出自动变量、函......
  • C语言笔记11(指针二)
    指针变量作函数参数函数的参数不仅可以是整型、实型、字符型,还可以是指针型它的作用是讲一个变量的地址传送到另外一个函数中          数组名做函数参数当用数组名作为参数时,如果形参数组中元素的值发生变化,实参数组元素的值也随之变化若有一个实......
  • aardio调用c语言dll动态库传结构体详细教程
    安装mingw32下载安装配置官方地址下载安装:https://sourceforge.net/projects/mingw/安装方法:https://blog.csdn.net/HandsomeHong/article/details/120803368↑记得最后要添加一下环境变量mingw64编译32位失败,待继续研究。https://zhuanlan.zhihu.com/p/413181676#安装完成......
  • 递归函数就这么简单!通俗的Go语言递归指南
    /Go语言递归函数/递归是一种很重要的编程技巧,可以用简洁的代码解决许多问题。Go语言同样支持递归函数。本文将通过示例讲解递归函数的用法。本文主要内容如下什么是递归函数递归函数工作原理递归函数结构解析示例1-阶乘计算示例2-斐波那契数列递归......
  • c语言进行时4-函数与数组
    什么是函数?函数是一块代码,接收零个或多个参数,做一件事情,并返回零个或者一个值。函数定义:本地变量(局部变量):函数的每次运行,就产生了而一个独立的变量空间,在这个空间的变量,是函数的这次运行所独有的,称作本地变量,也称局部变量。定义在函数内部的变量就是本地变量。参数也是本地......
  • (蓝桥)递归与递推
    1、对于 scanf printf和cincout按照10^5来划分使用 递归实现指数型枚举 https://www.acwing.com/problem/content/94/ #include<iostream>#include<cstring>#include<cstdio>#include<algorithm>usingnamespacestd;constintN=17;intn;inta[N];......
  • Python如何递归删除空文件夹
    1.Python如何递归删除空文件夹,这个问题很常见。但大多数人的解决办法都是自己实现递归函数解决这个问题,其实根本不用那么麻烦。Python中的os.walk提供了一种从内到外的遍历目录树的方法(设置topdown=False),这样由内到外判断当前目录树下是否有文件和文件夹,如果都没有则意味着当前目......