当前位置:   article > 正文

C语言学习(专插本)练习题合集_插本常考的c编程题

插本常考的c编程题

一.什么是递归?

递归,就是在运行的过程中不断地调用自己。递归有两个过程,
简单地说一个是递的过程,一个是归的过程。
简单用代码来理解:
  • 1
  • 2
  • 3
public void fun(参数) {
if (终止条件) {
return;
}
fun(参数);
(其他判断条件或语句);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
在上边代码中,当第一次进入函数时,先判断是否符合终止条件,符合则直接结束函数,不符合入下一语句,调用自己重新进入下一层自身函数,(注意这是最外一层将不向下继续执行语句,外层卡在fun(参数处)),这个调用自己进入自身函数的操作过程即为“递”的过程。假设进入下一层后符合终止条件,返回结果,此时之前进入自身函数执行完成返回最外一层函数,最外一层函数递归调用处得到结果,(即内层函数执行完成得到结果返回值),这个过程即为“归”的过程。这时最外一层函数才能继续执行下一语句,直至函数运行完成。

编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。

#define _CRT_SECURE_NO_WARNINGS 1
//函数的递归
//题目:接收一个无符号整型值,按照顺序打印他的每一位
//例如:输入1234 打印 1 2 3 4
#include <stdio.h>
//这个函数无返回值,所以用void,其中,要接收这个无符号的整形,在函数也要定义无符号的整形
void print(unsigned int n) {//用n来接收传过来的变量
	//条件判断进入递归函数
	if (n > 9) {
		print(n /10);//进来一次就除以十,就少一位数,看清楚这里定义的是print函数
	}
	printf("%d ", n%10);//这段代码第一次没进来,直接再次跳到这个函数的本身调用

}

int main() {
	unsigned int num = 0;//定义一个无符号整型
	scanf("%d", &num);
	//定义一个函数print,把输入的值传进去给这个函数
	print(num);//把输入的值传进去给这个函数
	return 0;

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

在这里插入图片描述

总结

整体思路,显示进入这个函数判断条件,输入1234,这个数是大于9的,符合条件,进入函数,然后除以十,再次传入这个函数,调用一次,传入的值变成123,还是大于9,再次进入函数再次调用,有除以十变成12,再次进入,直到最后。得到1,1%10还是1,再去到下次函数已经不满足大于9了,所以输出第一位数是1,此时注意,函数还没进行结束,我们第二轮看作嵌套,再次回到上一级12%10等于2输出。直到碰到结束条件。
存在限制条件,当满足这个限制条件的时候,递归便不再继续。 每次递归调用之后越来越接近这个限制条件

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/415225
推荐阅读
相关标签
  

闽ICP备14008679号