尚学堂编码题答案 第三章

这是一个包含三道Java编程题的博客,分别是:将十进制整数转换为二进制、编程计算1到100的和以及使用递归算法找出斐波那契数列的第40位数。每道题都有代码实现,并鼓励读者交流优化方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本编码答案为本人个人编辑,仅供参考。如有更优答案或者代码编写规范等问题欢迎读者私信本人或在下方评论处与本人交流。
1. 从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。
import java.util.Scanner;

public class ConversionDecimalToBinary {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print(“请输入十进制整数:”);
int num = input.nextInt();
conversion(num);
System.out.println();
conversion01(num);
}

static void conversion(int num) {// 这种方式无法表示负整数的二进制,还需要进一步的优化
    int r = 0;
    // long bin=0;
    String sb = "";
    // int t=0;

    while (num != 0) {
        r = num % 2;
        num = num / 2;
        // bin=bin+r*(int)Math.pow(10, t);//这是整数相加的方式进行,不过容易造成数字越界
        sb = r + sb;// 字符串拼接,可以表示很长的二进制
        // t++;
    }
    System.out.print(sb);
}

static void conversion01(int num) {// 直接调用API
    String r = Integer.toBinaryString(num);
    System.out.println(r);
}

}
本题有参考别人的思路,具体网址:https://www.cnblogs.com/vsign/p/7290594.html
2. 编程求:∑1+∑2+……+∑100。
public class SummationFunction {
public static void main(String[] args) {
System.out.println(“计算结果为:” + summation(100));
summation01(100);
}

static int summation(int num) {// 递归加循环

    int sum = 0;
    if (num == 1) {
        return 1;
    } else {
        for (int i = 0; i <= num; i++) {
            sum += i;
        }
        return sum + summation(num - 1);
    }
}

static void summation01(int num) {// 嵌套循环
    int sum = 0;
    int result = 0;
    while (num >= 1) {
        for (int i = 0; i <= num; i++) {
            sum += i;
        }
        result += sum;
        sum = 0;
        num--;
    }
    System.out.println("计算结果为:" + result);
}

}
3. 编写递归算法程序:一列数的规则如下: 1、1、2、3、5、8、13、21、34…… 求数列的第40位数是多少。
import java.util.Scanner;

public class RecursiveAlgorithm {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println(“请输入需要查找的第几位数:”);
int num = input.nextInt();
System.out.println(“第” + num + “数为:” + findRegular(num));
}

static int findRegular(int num) {
    if (num <= 2) {
        return 1;// 递归头
    } else {
        num = findRegular(num - 1) + findRegular(num - 2);// 递归体
    }
    return num;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值