2021-05-22递归练习作

 

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 * 2​0​​ + 0 * 2​1​​ + 1 * 2​2​​ + 1 * 2​3​​ = 1101 % 10 + convert(110) * 2 ;

110 = 0 * 2​0​​ + 1 * 2​1​​ + 1 * 2​2​​ = 110 % 10 + convert(11) * 2;

11 = 1 * 2​0​​ + 1 * 2​1​​ = 11 % 10 + convert(1) * 2 ;

convert(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值