C语言学习(第十九课)初识函数4(函数递归)

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<string.h>

//函数递归:函数自己调用自己,以少量代码完成大量复杂的运算,把大事化小。
//1、不能死递归,必须有跳出条件,每次递归逼近跳出条件。
//2、递归层次不能太深

//两个错误示范:
//1、main函数内调用main函数本身的死递归:
// int main()
//{
//     printf("hello world");
//     main();//此处main函数调用main函数自己,由于没有跳出条件,每次递归也不会逼近跳出条件,导致运行后会一直打印 hello world,直到栈溢出后结束程序。
//    return 0;
//}

//2、递归层次太深导致的死递归:
//void test(int x)
//{
//    if (x < 10000)//此处跳出条件为n>10000,而n是从1开始,每次递归为n+1,需要递归9999次,才可以跳出,由于递归层次太深,导致运行后会出现栈溢出错误。
//    {
//        test(x + 1);
//    }
//}
//
//int main()
//{
//    int a = 1;
//    test(a);
//    return 0;
//}

//正确示范:
//编写一个程序:要求接受一个整型值(无符号),按照顺序打印它的每一位。例如:输入:5678,输出5 6 7 8.

void print(unsigned int n)
{
    if (n > 9)//跳出条件 n<9,
    {
        print(n / 10);//开始递归,每次递归为n/10。
    }
    printf("%d ", n % 10);//打印n%10的值。
}


int main()
{
    unsigned int num = 0;
    scanf("%u", &num);//5678
    //递归 - 函数自己调用自己
    print(num);//print函数可以打印参数部分数字的每一位
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值