递归专项练习(笔试练习)1

不知道大家有没有和小陈一样的想法,明明理解了递归的算法,可是当面对一道用递归来完成的题目时,却往往难以下手,这是我们的修为不够导致的,那么今天,小陈就由浅入深地为您详解一道递归小题,希望能帮到您


对于递归,我觉得很重要的一个事就是,这个函数的功能是什么,而这个,是完全由你自己来定义的。 所谓递归,就是会在函数内部代码中,调用这个函数本身,那么就引出了第二件重要的事情,我们必须要找出递归的结束条件,不然的话,会一直调用自己,进入无底洞。也就是说,我们需要找出当参数为啥时,递归结束,之后直接把结果返回

任务描述

  使用递归求整数的正序输出。

输出

  输出输入整数的每一位数字,每个数字前有一个空格。

测试说明

测试用例

  输入:    123   输出:     1 2 3

以下是主函数部分。我们需要将其中的fun函数补全。

#include <stdio.h> 
void fun( int n ) ;
int main()
{
    int n ;
    scanf ( "%d" , &n );
    if(n<0){
        printf("-");
        n = -n;
    }
    fun ( n ) ;
    return 0 ;
}

来看第一件事,也就是函数的功能。在主函数里,已经有了将负数变为正数的部分,那么fun函数要实现的功能就只有两个。

1.能用递归将整数各位分开。

2.能将整数从个位开始打印出来。 

void fun(int n)
{
if(n<10)
{
    printf(" %d",n);//此为第二要素,即递归的出口,否则函数将无限递归下去。
}
else
{
    fun(n/10);//将打印函数置于fun函数之后,这样就会从递归的出口,也就是个位开始打印。
    printf(" %d",n%10);
}
}

 需要注意的是,fun函数要写在printf之前,且else不可省略,不然函数会一直调用。

希望能为大家带来帮助!

最后,如果您觉得我的文章写的不错。

请给小陈:

点赞,收藏加关注!我一定会带来更好的文章的!

猜你喜欢

转载自blog.csdn.net/weixin_73534885/article/details/128872978
今日推荐