初识函数递归

一.什么是递归

递归:在一个函数里面调用它自己(包括main函数)。

二.使用递归函数的注意事项

1.存在限制条件,当满足这个限制条件时,递归便不再继续。

2.每次递归调用之后越来越接近这个限制条件。

3.注意栈溢出。(递归层次不能太深)

三.实例

输入一个无符号整型数n,得到n的每一位数字:

例如:1234,使用函数递归,得到1,2,3,4。

#include<stdio.h>
void print(unsigned int n)
{
if(n>9)//限制条件
{
print(n/10);//n\10越来越接近9
}
printf("%u ",n%10);
}
int main()
{
printf("请输入一个正整数,得到其每一位数:\n);
unsigned int n=0;
scanf("%d",&n);
print(n);
}

解题思想:当输入1234时,n的值会变为1234,n=1234进入print函数,

1,判断1234是否大于9?—————是,n/10=123,n=123进入print函数(进行递归)。(此时if语句还未走出,无法执行printf语句。)

2,判断123是否大于9?——————是,n/10=12,n=12进入print函数(进行递归)。(此时if语句还未走出,无法执行printf语句。)

3,判断12是否大于9?——————是,n/10=1,n=1进入print函数(进行递归)。(此时if语句还未走出,无法执行printf语句。)

4,判断1是否大于9?————否,不进入print函数(不进行递归),打印n%10=1。

5,返回3,步骤2给到3的n=12,print的步骤已执行完,到打印的步骤,打印n%10=2。

6,返回2,步骤1给到2的n=123,print的步骤已执行完,到打印的步骤,打印n%10=3。

7,返回1,main给到1的n=1234,print的步骤已执行完,到打印的步骤,打印n%10=4。

8.print函数已执行完。

实例2:

#include<stdio.h>
void test(int n)
{
if(n<10000)
{
test(n+1);
}
}
int main()
{
test(1);
return 0;
}

解题思想:当n<10000时,一直递归函数test,n++,直到n加到10000。但是,内存空间太大,会出现栈溢出(stack overflow)。

实例来源于b站up鹏哥c语言,C语言入门到精通课程。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值