6-7 整数逆序输出 (100 分)
请写出将一个整数逆序输出的函数。
注意:此题要求递归求解且不允许使用数组。如果违反要求则没有分。
函数接口定义:
函数接口如下:
void reverse(int n) ;
其中 n
是用户传入的参数。 n
的值大于0且不超过int
的范围; 函数的返回值为空,其功能是逆序输出 n
。测试用例保证输入的n
末尾不为0。
裁判测试程序样例:
函数被调用进行测试的例子如下:
#include <stdio.h>
void reverse(int n) ;
int main()
{
int n;
scanf("%d",&n);
reverse(n) ;
printf("\n");
return 0;
}
/* 请在这里填写答案 */
输入样例:
1234
思路:
递归有两个关键:
1.递归式
2.递归边界
这里逆序输出,递归式可以想成 输出一个数+调用自己输出下一个数
边界就是n==0时结束
代码:
void reverse(int n){
printf("%d",n%10);
if((n=n/10)!=0){
reverse(n);
}
}
6-8 实验6_4_二进制转十进制 (100 分)
设计递归函数int convert(int n);用于将二进制数n转换为十进制数并返回。 递归函数设计思路与提示: 如将1101转换为十进制的形式:
1101=1 * 20 + 0 * 21 + 1 * 22 + 1 * 23 = 1101 % 10 + convert(110) * 2 ;
110 = 0 * 20 + 1 * 21 + 1 * 22 = 110 % 10 + convert(11) * 2;
11 = 1 * 20 + 1 * 21 = 11 % 10 + convert(1) * 2 ;
convert(1)