递归的一些应用

递归的C语言实现

递归:简单来说就是自己调用自己。
下面用一个简单的例子说明递归的主要步骤

源码

#include<stdio.h>
void up_and_down(int);
int main(void){
    up_and_down(1);
    return 0;
}
void up_and_down(int n){
    printf("Level %d: n location %p\n",n, &n);
    if (n<4)
    {
        up_and_down(n+1);
    }
    printf("LEVEL %d: n location %p\n",n, &n);
}

输出

Level 1: n location 000000000061FE00
Level 2: n location 000000000061FDD0
Level 3: n location 000000000061FDA0
Level 4: n location 000000000061FD70
LEVEL 4: n location 000000000061FD70
LEVEL 3: n location 000000000061FDA0
LEVEL 2: n location 000000000061FDD0
LEVEL 1: n location 000000000061FE00

要点

  1. 每一个函数调用都有自己的变量
  2. 每次函数调用都会返回一次
  3. 递归函数位于递归调用之前的语句,均按被调函数的顺序执行
  4. 递归函数中位于递归调用之后的语句,均按被调函数相反的顺序执行
  5. 虽然每级递归都有自己的变量,但是并没有拷贝函数的代码。

关键点

  1. 递归出口:即递归结束的条件,使递归不在进行下去。

  2. 递归式子(*):递归的表达式,递归的灵魂。

练习题

  1. PTA 习题 2.6
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值