什么是递归

递 归 可 以 是 循 环 递归可以是循环

能用循环做的,就能用递归做,在算法比赛中,一般只写递归,不写循环

循环 for (起始条件;循环终止条件;循环条件变化 ) === 》
递归:递归起始条件: func_recursive(n); ;有使递归趋于结束的语句:func_recursive(++n) ; 递归终止条件 n == 9

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 直接或是或是间接调用自己的情形,就递归调用。recursive
// 递归,是比较接近自然语言特性的一种调用方式。递归必须要用合理的出口,不然会挂掉


//循环 === 》  递归:递归起始条件:func_recursive(n)  有使递归趋于结束的语句:func_recursive(++n)     递归终止条件   n == 9


int func_recursive(int n)
{
    if(n == 9)
    {
        printf("%d \n",n) ;
        return 0;
    }
    else
    {
        printf("%d \n",n) ;
        return func_recursive(++n);
    }
}


int main()
{

    // for循环
    for (int i =0;i<10;i++) {
        printf("%d \n",i) ;
    }

    printf("**********一样一样的*****************\n");

    // 迭代
    int n = 0;
    int ret = func_recursive(n);

    return 0;
}




在这里插入图片描述


递归和循环,有共同的特点,有起点,有终点,重复作同样的事情。

所以很多情况,两者是可以相互转换的。

如果上升一下理论高度,作一个重复面有明确起点和终点的事,有递归和迭代两种选择。

循环其实就是一种迭代。

递归的方式,写法比较简洁,符合正常逻辑,但代码理解难度大,内存消耗大(易导致栈溢出)

所以能用迭代(lterative)解决的问题,不要用递归来完成。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值