本编码答案为本人个人编辑,仅供参考。如有更优答案或者代码编写规范等问题欢迎读者私信本人或在下方评论处与本人交流。
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;
}
}