几个看似复杂实则简单的笔试题

题目一

计算1到n的累加和
题目描述:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

*竟然不能用乘除法和循环以及条件判断语句,乍一看这也太变态了吧。还好可以用加法!用递归来代替循环,然后从n+n-1开始,一直加到n=0结束。那么问题是,如何判断n!=0呢? 这里便用到一个基本的运算符 “&&” ,与运算符在运行时,只有两边都为真,结果才为真,那么只要前面条件为假,后面的运算将不再进行。伪代码表示:
if n!=0
sum+=f(n-1)
*

Java代码实现如下:

 public static int f(int n) {
	int sum = n;
	boolean t = (n != 0) && (sum = sum + f(n - 1)) != 0;
	return sum;
    }
  • 这个 && 逻辑判断符的作用就是:如果 n != 0 成立的话,那么逻辑判断符后面的判断语句 (f(n-1) + n ) != 0 也会执行, 如果 n!= 0 不成立的话,那么后面的判断语句 ((f(n-1) + n)) != 0 就不会执行,通过这种方法,就可以达到我们递归结束条件判断的目的了。

  • 这里说明一下,(f(n-1) + n) != 0 这条判断语句是没有任意其他含义的,我们的目的是为了执行 f(n-1)+n,之所以加上个 != 0 的判断,是因为逻辑 判断符号 && 只支持 boolean 类型,不支持 int 类型。

题目二

两个数相乘
题目描述:实现两个整数的相乘,不能使用乘法运算符和循环

这个题可能就比较简单了,不能使用乘法和循环,但我们可以使用除法呀,
A
B=A/(1/B)*
Java代码实现如下:

 public static int mult(int a, int b) {
	return b != 0 ? (int) (a / (1.0 / b) + 0.99) : 0;
    }
  • 一行代码搞定,如果b!=0 那么就让a乘1/b,反之结果为0。
    但是这里有个问题,1/b数据类型为double,而两个整数相乘结果必然为整数,这里需要int进行转化类型,但是除法可能会导致后面尾数的丢失,所以我补了个0.99。注意,进行 int 类型转化时,小于 1 就行当做0处理。0.99又会被舍去。不影响最终结果。

题目三

求两数之和
题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

方法一:

  • 在绞尽脑汁之后,想到了数电曾学过的异或运算。如果我们把两个数进行异或,例如num1 = 101, num2 = 001,做异或运算:tmp = num1 ^ num2,结果是 tmp =100。那么此时得到的结果 tmp 其实就是两个数(num1,num2)各个二进制位上相加,不算进位的结果。而 num1 = (num1 & num2)<<1的结果就是两个数相加时那些需要进位的二进制位。例如 (101 & 001)<< 1=010,那么两个数第一位相加需要进位,我们需要把进的 那一位最后加到第二位上去。 说白就是 a + b = a ^ b + (a & b) << 1。 代码中,如果 num1 == 0的话,代表没有进位了,此时就可以退出循环了。
    Java代码实现如下:
 public static int Add(int num1, int num2) {
	int tmp = 0;
	while (num1 != 0) {
	    tmp = num1 ^ num2;
	    num1 = (num1 & num2) << 1;
	    num2 = tmp;
	}
	return num2;

方法二:

  • java方法库中有一个BigInteger的方法,它可以表示任意大的数,而这个方法的四则运算也都是用函数来进行,不会涉及四则运算符号,也算是投机取巧了一次。

Java代码实现如下:

public static int Add(int num1, int num2) {
		BigInteger b1 = new BigInteger(String.valueOf(num1));
		BigInteger b2 = new BigInteger(String.valueOf(num2));
		return b1.add(b2).intValue();
	}

未完待续…

Python网络课程在线学习平台研究AI更换标第1章引言介绍Python网络课程在线学习平台的研究背景、意义、国内外现状和研究方法。1.1研究背景与意义阐述Python在线学习平台的重要性和研究意义。1.2国内外研究现状概述国内外Python在线学习平台的发展现状。1.3研究方法与论文结构介绍本文的研究方法和整体论文结构。第2章相关理论总结在线学习平台及Python教育的相关理论。2.1在线学习平台概述介绍在线学习平台的基本概念、特点和发展趋势。2.2Python教育理论阐述Python语言教学的理论和方法。2.3技术支持理论讨论构建在线学习平台所需的技术支持理论。第3章Python网络课程在线学习平台设计详细介绍Python网络课程在线学习平台的设计方案。3.1平台功能设计阐述平台的核心功能,如课程管理、用户管理、学习跟踪等。3.2平台架构设计给出平台的整体架构,包括前后端设计、数据库设计等。3.3平台界面设计介绍平台的用户界面设计,强调用户体验和易用性。第4章平台实现与测试详细阐述Python网络课程在线学习平台的实现过程和测试方法。4.1平台实现介绍平台的开发环境、技术栈和实现细节。4.2平台测试对平台进行功能测试、性能测试和安全测试,确保平台稳定可靠。第5章平台应用与效果分析分析Python网络课程在线学习平台在实际应用中的效果。5.1平台应用案例介绍平台在实际教学或培训中的应用案例。5.2效果评估与分析通过数据分析和用户反馈,评估平台的应用效果。第6章结论与展望总结Python网络课程在线学习平台的研究成果,并展望未来发展方向。6.1研究结论概括本文关于Python在线学习平台的研究结论。6.2研究展望提出未来Python在线学习平台的研究方向和发展建议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值