- 博客(25)
- 资源 (1)
- 收藏
- 关注
原创 布尔代数中表达式的展开及因式分解的技巧
学过布尔代数的同学肯定有学表达式的展开及因式分解,并且知道解此类问题时有3个公式可以供我们使用。然而,初学者在使用这些公式求解的时候感觉不够得心应手。在此我处理下此类问题的求解技巧,以供各位批评或交流.........
2022-07-05 13:02:11 1721 1
原创 由数组、指针、函数、结构组合而成的指针数组、数组指针、结构指针、结构数组、函数指针、指针函数等的概念辨析
c语言中的指针被普遍认为是一个难点,不过个人认为:指针本身并不难,无非就是指向某一块存储空间的地址,倒是指针与指针、数组、结构、函数等的组合倒是很容易把初学者绕晕。于是此文主要谈一下我是如何理解这些概念的,借此与各位伙伴沟通交流。............
2022-06-10 09:18:10 165
原创 关于CS61A的Lab3中Interleaved Sum的答案
Write a function interleaved_sum that similarly computes the sum of a sequence of terms from 1 to n, but uses different functions to compute the terms for odd and even numbers. Do so without using any loops or testing in any way if a number is odd or even.
2021-11-21 10:44:42 764
原创 关于Homework03的Church numerals的代码
Church numerals是一个很有意思的问题,cs61a的homework03中的Q7就是跟Church numerals有关的。在做这道题的过程中,我首先自己写出了答案并且测试通过,然后找了下官方的答案,没想到官方的代码如此的简短,思考之后令人不得不拍手称赞。因此,此篇文章我将分三部分:第一部分贴出我自己的代码,第二部分贴出官方的代码,第三部分会简单比较下我写的代码与官方的代码,并就官方的代码中使用的lambda方法尝试进行解读,如有错误,敬请各位批评指正。一、我自己写的代码def zer
2021-11-19 19:14:46 750 2
原创 关于python中函数名相同但参数不同的函数的问题
说明:学过java的同学都知道,如果java代码中存在这样的两个函数:这两个函数的函数名相同但参数不同,那么这是两个不同的函数,也可以称之为函数的重载。那么,如果python中如果出现这样的两个函数,情况会与在Java中的一样吗?接下来,我会通过两种方式来展现给大家:如果python中出现函数名相同但参数不同的函数时,情况是怎样的?方式一:通过IDE来展现def identity(x): print("我是带有1个参数的identity函数")def identity(x, y):
2021-11-13 15:16:16 6288
原创 Lab 02: Lambda Expressions and Higher-Order Functions
Q1: WWPD: Lambda the Free
2021-11-12 23:06:04 131
原创 lab01 Expressions & Control
Q1:WWPD:VeritasinessQ2:WWPD:LoopsQ6:WWPD:ThuthinessQ7:WWPD:What If?
2021-11-08 16:15:14 118
原创 python代码测试的两种思路
工具:pycharm2020.3.4 x64一、使用Assertions进行测试代码:def sum_naturals(n): """return the sum of the first n natural numbers""" total, k = 0, 1 while k <= n: total, k = total+k, k+1 return totaldef sum_naturals_test(): assert
2021-11-03 10:35:01 431
原创 lab00 Introduction & Workflow
打算刷一遍加州伯克利的cs61a的课程。由于可以通过"run ok"来评估lab做的是否ok,但没有找到提交lab的途径,于是索性把"run ok"的结果记录在这里。
2021-10-11 21:12:40 96
原创 C语言不匹配的整形转换详解
背景:近期翻看《C primer plus》第6版,书中在第四章有写不匹配的整形转换的代码和分析。分析书中的分析思路可以解释的通,但是我认为还有一种更偏向底层的分析思路,所以写这篇文章记录下,如有错误敬请大家批评指正。本文布局:第一部分是不匹配的整形转换代码(基于书中的代码的基础上做了些修改),第二部分是该代码对应的输出结果的截图,第三部分尝试从机器码这样偏底层的角度来解释这样的结果,第四部分谈下我对本文中的这种偏向底层的分析思路的想法。一、不匹配的整形转换代码#include <std
2021-08-16 16:21:17 223
原创 Java通过Callable接口创建线程的原理
Java创建多线程的方式有4种,分别是:通过继承Thread类的方式、通过实现Runnable接口的方式、通过实现Callable接口的方式、通过多线程的方式。本文试图梳理下通过实现Callable接口的方式创建线程的原理:第一部分简要写下通过Callable接口创建线程的主要代码,第二部分结合API文档和源代码对这短短的几行代码背后所实现的逻辑进行梳理一、通过Callable接口创建线程的主要代码class NewCallable implements Callable{ //实现Cal
2021-07-14 12:38:46 437 1
原创 关于书籍“Composing Programs”1.6.3自定义函数的嵌套定义与非嵌套定义的比较
最近在刷UCB的CS61A2018年的课程,用的配套书籍是John DeNero的“Composing Programs”,书籍1.6.3部分讲到user_defined function的qian'tao
2021-06-17 11:34:58 257
原创 《C语言程序设计》习题7-程序设计题-5找鞍点
输入1个正整数n(1<=n<=6)和n阶方阵a中的元素,假设方阵a最多有1个鞍点,如果找到a的鞍点,就输出其下标,否则,输出“NO”。鞍点的元素值在该行上最大,在
2021-06-01 23:17:56 1617 2
原创 关于MIT6.0001课程中归并排序代码的算法复杂度问题
MIT6.0001最后一节课“Searching and Sorting”中讲到归并排序,首先我承认归并排序算法的时间复杂度可以做到O(n*log(n)),简单的公式推导见下方第1部分。但是,如果看过该课程或者课程配套书籍的同学,会注意到MIT实现归并排序的代码(见下方第2部分的代码),我认为该代码的时间复杂度不是O(n*log(n)),而是O(n*n*log(n)),原因在于MIT的这个归并排序代码每递归一次,都要复制一次列表,而复制列表的时间复杂度就是O(n),因此O(n*log(n))*O(n)=O(
2021-05-18 23:05:58 203 1
原创 Problem set 2
HangmanPart1:Threehelperfunctions1A)Determinewhetherthewordhasbeenguesseddef is_word_guessed(secret_word, letters_guessed): ''' secret_word: string, the word the user is guessing; assumes all letters are lowercase l...
2021-05-09 18:07:41 251
原创 Problem set 1
YouhavegraduatedfromMITandnowhaveagreatjob!YoumovetotheSanFranciscoBayAreaand decidethatyouwanttostartsavingtobuyahouse.AshousingpricesareveryhighintheBayArea, yourealizeyouaregoingtohavetosaveforsevera...
2021-05-09 08:19:52 501 3
原创 Problem set 0
import mathx = int(input("Enter number x:"))y = int(input("Enter number y:"))print("x**y = ",x**y)print("log2(x) = ",math.log(x,2))
2021-04-29 22:29:21 143
原创 如何通过linux的终端命令远程登陆windows主机
linux版本:ubuntu 20.4,windows版本:win10家庭版。接下来演示:将ubuntu作为客户端,将windows作为服务器,通过ubuntu的终端命令远程登陆windows主机。该过程主要分为两步:1. 安装OpenSSH Server并启动(1)win+R打开运行窗口,输入fodhelper,到达“可选功能”界面,点击“添加功能”(2)找到“OpenSSH服务器并进行安装(2)win+R打开运行窗口,输入services.msc2.使用ubuntu终端.
2020-07-09 21:46:54 3410
原创 复制单级文件夹中指定后缀的文件并给文件重新命名
思路:首先要筛选出原文件夹中符合要求的文件,然后将这些文件复制到目标文件夹中并重新命名。发现:很多博客通过过滤器从原文件夹中筛选出了指定后缀的文件后,又写了一个增强for循环来将这些文件拷贝到目标文件夹中,此类代码将在下面的方法一中进行展示。但其实我们知道,使用listFiles()方法做过滤器的时候,本身已经对File对象进行了遍历,因此过滤后就可以直接拷贝,不需要借助增强for循环,此类代...
2020-04-12 15:43:28 235
原创 递归遍历目录下指定后缀名结尾的文件名称的两种方法
初学java时,常常会去尝试除了正确答案之外的其他思路,虽然这所谓的其他思路可能不是最节省资源、可能也不是代码效率最优的方法,但常常能加深初学者对java基础知识的理解,以下为递归遍历目录下指定后缀结尾的文件名称的2种方法。方法一:通过File类的listFile()方法获取文件路径从而进行递归(常用方法)public static void main(String[] args) {...
2020-04-07 23:16:15 721
原创 java统计字符串中大小写字母及数字出现次数的两种方法
基本思路:通过for循环遍历字符串,通过String类中的charAt(int index)方法返回指定索引的字符,然后通过两种方法判断是否大小写字母或数字并进行统计,最后输出结果方法一:String s = "hjsdg639NJDHjkfh6439hbdJKSHEFLhjsdg";int upper = 0;int lower = 0;int num = 0;for(int ...
2020-03-15 11:06:46 4912 1
原创 java静态方法调用与非静态方法调用
初学java(未学习面向对象)时我们可以定义一个类,类中可以写静态方法,调用时可以直接使用类名.方法名。而学了面向对象后,定义类之后,就需要创建对象并通过对象来调用类中的成员方法或构造方法。以下为静态方法调用(不创建对象)与非静态方法调用的代码区别(定义1个长方形类,定义求周长和面积的方法,然后定义1个test类对其进行测试):例1:静态方法调用例2:非静态方法调用(面向对象,给对...
2020-02-02 00:05:10 1151
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人