C笔记(十一)——递归函数

 

递归函数的应用场景:

  • 数学定义递归的,如计算阶乘
  • 数据结构是递归的,如单向链表、
  • 问题的解法是递归的,非数值计算领域存在很多必须用递归法才能解决的经典问题,如汉诺塔(Hanoi)塔、骑士游历、八皇后问题(回溯法)

一、定义:函数自己调用自己,有先序递归和后序递归

#include <stdio.h>

void text(int n)
{
    if(n > 0) //终止条件
    {
        n--;
        printf("n = %d\n", n); //先序递归,代码顺序执行
        text(n);//函数递归,即自己调用自己
        printf("n1 = %d\n", n);//后续递归,代码逆序执行
    }
}
int main()
{
    int i = 3;
    text(i);
    return 0;
}

    递归的过程分析

注:递归要有终止条件,即这里的

 if(n > 0) 

二、十进制转二进制

#include <stdio.h>
void bin (int n)  //十進制轉十六進制
{
    int i = n % 16;

    if (n > 0)
    {
        bin(n / 16);
        printf("%d", i);
    }
}

int main()
{
    int i = 15;
    bin(i);
    return 0;
}

三、斐波拉契数列:0,1,1,2,3,5,8.。。

·int fib(int n)
{
    if(n == 0)
        return 0;
    if(n == 1)
        return 1;
    else
    {
      return fib (n - 1) + fib(n - 2);
    }
}

int main()
{
    printf("%d\n",fib(3));
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值