写一个函数参数是一个int数值要求倒着输出这个数,要求用到递归算法。

是我面试遇到的题目

算是递归算法的一个经典题目

我给的代码

void fun(int a)
{
    if(a < 10)
        printf("%d", a);
    while(a > 10)
    {
        int x;
        x = a % 10;
        printf("%d", x);
        a = a / 10;
    }
}

这个代码只是蹩脚的实现了功能

应该这样改进

if在后面要输出计算到a小于10,不然就少一位数

void fun(int a)
{   
    while(a > 10)
    {
        int x;
        x = a % 10;
        printf("%d", x);
        a = a / 10;
    }   
    if(a < 10)
        printf("%d", a);
}

用到递归算法的代码应该是这样

输出number最后一位数,判断是否小于10,如果大于10,再输出最后一位数然后返回值是number去掉最后一位数的数,这个返回值再次输出最后一位数......

例:number = 12345;

输出5 判断12345 大于 10 返回12345 / 10 = 1234,1234再次调用func函数,输出4,判断1234大于10 返回 1234 / 10 = 123 ...... 判断1小于10条件不成立函数执行完毕

func函数的返回值是1,即number的第一位数

int func(int number)
{   
    printf("%d",number% 10) ;
     
    if (number / 10 != 0)
        return func(number / 10);
}


所谓递归,是指一个函数直接或者间接调用到自己。

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页