IOS成长中 C语言之递归

知识点概括:

                  1.递归

                  2.const


函数递归:

在函数调用中,如果直接或间接地调用该函数本身,称为递归调用.递归调用有时也称为循环定义.
对于递归来说,必须要出口,也就是递归的结束标志,必须要有结束,否则就会形成死循环
return 后面啥都不写,代表返回值类型为空void

const

修饰变量,把变量当做常量来看待,只能读不能写
const  让程序安全
修饰谁,谁就不可变

const int *p = &a;

const修饰*p,不能通过指针变量p修改指向空间的内容,但是p可以重指向

int * const p2 = &a;

const 修饰p2, p2不可以重指向,但是可以通过p2修改指向空间的内容

const int * const p3 = &a;

修饰 p3 以及 *p3, p3不可以重指向,也不可以通过*p3修改指向空间的内容


void eatAppleXiaoMeng(int n) {
    //对于递归来说,必须要出口,也就是递归的结束标志,必须要有结束,否则就会形成死循环
    if (n == 0) {
        return;   //return 后面啥都不写,代表返回值类型为空void
    }
    n--;   //留一个苹果
    printf("小萌吃第%d个苹果\n", 4 - n);  //吃了一个苹果
    eatAppleXiaoMeng(n);    //找自己吃苹果
}

//讲一个整数正序输出, 以及 逆序输出
//例子: 54321 正序:54321 逆序:12345

void zhengXu(int n) {
    if (n == 0) {
        return;  //如果没有可挑选的数字,直接返回,递归结束
    }
    //.留一个数
    int number = n % 10;
    //2.找下一个人
    zhengXu(n / 10);
    //3.输出留的数
    printf("%d", number);
}
void niXu(int n) {
    if (n == 0) {
        return;
    }
    int number = n % 10;
    printf("%d",number);
    niXu(n / 10);
}

//求阶乘,5!
int jieCheng(int n) {
    if (n == 1) {
        return 1;  //如果求1的阶乘,直接返回1
    }
    int number = n;
    int value = jieCheng(n - 1);
    return number * value;
}

    eatAppleXiaoMeng(4);
    zhengXu(54321);
    niXu(54321);
    printf("%d", jieCheng(10));
    //const
    //const 修饰变量,把变量当做常量来看待,只能读不能写
    const int b = 10;
    b = 5;
    //const 修饰谁,谁就不可变
    int a = 10;
    int b = 20;
    
    const int *p = &a;
    //const修饰*p,不能通过指针变量p修改指向空间的内容,但是p可以重指向
    p = &b;
    *p = b;
    int const *p1 =&a;
    //const修饰*p,不能通过指针变量p1修改指向空间的内容,但是p1可以重指向
    int * const p2 = &a;
    //const 修饰p2, p2不可以重指向,但是可以通过p2修改指向空间的内容
    *p2 = b;
    p2 = &b;
    const int * const p3 = &a;
    //const 修饰 p3 以及 *p3, p3不可以重指向,也不可以通过*p3修改指向空间的内容
    
    
    //const  让程序安全
    strlen(const char *)














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值