赞
踩
递归,就是在运行的过程中不断地调用自己。递归有两个过程,
简单地说一个是递的过程,一个是归的过程。
简单用代码来理解:
public void fun(参数) {
if (终止条件) {
return;
}
fun(参数);
(其他判断条件或语句);
}
在上边代码中,当第一次进入函数时,先判断是否符合终止条件,符合则直接结束函数,不符合入下一语句,调用自己重新进入下一层自身函数,(注意这是最外一层将不向下继续执行语句,外层卡在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; }
整体思路,显示进入这个函数判断条件,输入1234,这个数是大于9的,符合条件,进入函数,然后除以十,再次传入这个函数,调用一次,传入的值变成123,还是大于9,再次进入函数再次调用,有除以十变成12,再次进入,直到最后。得到1,1%10还是1,再去到下次函数已经不满足大于9了,所以输出第一位数是1,此时注意,函数还没进行结束,我们第二轮看作嵌套,再次回到上一级12%10等于2输出。直到碰到结束条件。
存在限制条件,当满足这个限制条件的时候,递归便不再继续。 每次递归调用之后越来越接近这个限制条件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。