C/C++教程

C语言-递归法将一个数字转换成字符串

本文主要是介绍C语言-递归法将一个数字转换成字符串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

        

任务描述

本关任务:用递归法将一个整数 n (任意位数的整数)转换成字符串,并输出,各个字符之间用空格隔开。

例如,输入483,应输出字符串4 8 3

测试输入:123456789 预期输出:1 2 3 4 5 6 7 8 9

测试输入:-1314520 预期输出:- 1 3 1 4 5 2 0

  递归法是C语言中重点。我对递归理解就是将1个问题不断分解成小问题求解。比如说求10的阶乘,10!就可以分解为10*9!,10*9*8!...到10*9*8*...1!,1的阶乘就是1,再返回到2!,3!,4!...10!。如图解:

         

 

现在看一下这个题,将数字一个一个分开打印,第一个、第二个、第三个...,这样的问题就可以分解为第一个加剩下的数字,不断分解剩下的数字,直到最后一个数字。比如1234,就可以分解为打印1 (234),再分解成1 2 (34),1 2 3 (4)。注意是先打印前面的数字,后打印后面数字。假如我们想先打印后面数字,这是比较容易的%10得到最后数字,那么前面数字呢?1234得到1就是1234/1000=1234/10/10/10,看到这里相信大家也有思路了吧,可以用循环来/10得到前面数字,当然如果在递归里面就不用循环了。这样循环就是1234-123-12-1,递归返回就变成打印1,打印12%10,打印123%10,打印1234%10

         递归函数就是在函数内间接或直接调用本身函数,其每次返回值或打印值时都会返回到上一次调用的地方,在上面就会返回到figureTrasform(i)下面的printf语句,就不会再次判断执行if,这是我之前知识错点,在这里和大家辨清一下。我还是新手,逻辑还不够清楚,请见谅。

 

这篇关于C语言-递归法将一个数字转换成字符串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!