首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我需要提到方法名?为什么不简单地(n-1)*n?

方法名在编程中起到了标识和区分不同功能的作用。它是一个函数或方法的唯一标识符,通过方法名可以方便地调用和引用相应的功能代码。

为什么需要提到方法名?因为在一个程序中可能存在多个函数或方法,它们可能具有相同的参数类型和返回值类型,但是功能却不同。通过给每个函数或方法起一个独特的方法名,可以方便地区分和调用不同的功能。

如果只使用简单的数学运算(n-1)*n来命名方法,无法准确地表达方法的功能。在实际开发中,方法名应该具有描述性,能够清晰地表达方法的用途和功能,方便其他开发人员理解和使用。

举例来说,假设有一个计算阶乘的方法,使用简单的数学运算(n-1)*n来命名,无法准确地表达该方法的功能。而使用方法名"calculateFactorial"则能够清晰地表达该方法的用途和功能。

在编程中,良好的命名规范和规范的方法名可以提高代码的可读性和可维护性,方便团队协作和代码的复用。

需要注意的是,方法名应该遵循一定的命名规范,例如使用驼峰命名法或下划线命名法,并且应该具有一定的描述性,能够准确地表达方法的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

千万别小看这些运算符背后的逻辑

原创@飞白 前言 最近回顾javascript的一些基础知识点时,引起的思考确实颠覆了之前的一些认知。清楚记得曾多次在网上看到一些奇奇怪怪的表达式,它们的运算结果着实让人懵逼。...就比如我在js数据类型很简单,却也不简单这一篇笔记中提到的[] == ![]这样一个表达式,它的运算结果是true。如果你不细致去研究它背后的运算逻辑,你只会惊呼”这是什么鬼“?...相等运算符== 这个运算符的运算规则,在js数据类型很简单,却也不简单这篇笔记中已经简单解释过了。...移位运算符 在复习到移位运算符这块时,不由得提出了一个疑问:“javascript中为什么没有无符号左移运算符?”要解答这样一个疑问,首先还是要看看左移和右移分别是怎么运算的。...个人的想法是,应该是要回到移位运算的本质。 二进制表示的机器数在相对于小数点作n位左移或右移时,其实质就是该数乘以或除以2nn=1,2, …, n)。

75330
  • 跟面试官说MySQL单表数据量不要超过两千万,面试官不信

    面试官又问:这里为什么要做一个分库分表的操作呢?如果放在同一张表里面,为什么会导致查询性能降低? 小王内心 OS:为什么1+1=2?...,一般还没到这个限制,磁盘就撑不住了; 如果主键声明为tinyint类型,那么 tinyint 类型最大为2的8次 – 1,也就是255,所以如果插入一条 ID=256 的数据,就会报错; 上面是从自增主键的角度来讲述单表最大数据量理论上能达到多少...(根节点)有一个非叶子节点,那么第二层就有X个节点,第三层就有 X 的2次个节点,第四层就有 X 的三次个节点,以此类推,第 N 层(即叶子节点所在的第 N 层)就有 X 的 N-1 次方个节点;在...Y; 对于一个高度为 N 的 B+树,顶层(根节点)有一个非叶子节点,那么第二层就有X个节点,第三层就有 X 的2次个节点,第四层就有 X 的三次个节点,以此类推,第 N 层(即叶子节点所在的第...N 层)就有 X 的 N-1 次方个节点; 在 B+ 树中,所有的记录都存储在叶子节点中,假设每个叶子节点都可以存储的行记录数为 Y; 那么 B+ 树可以存储的数据总量为叶子节点总数乘以每个叶子节点存储的记录数

    2.9K71

    数学之美番外篇:平凡而又神奇的贝叶斯方法

    ——具体说,我们 需要做两件事情:1....此外曲线拟合也是,平面上 N 个点总是可以用 N-1 阶多项式来完全拟合,当 N 个点近似但不精确共线的时候,用 N-1 阶多项式来拟合能够精确通过每一个点,然而用直线来做拟合/线性回归的时候却会使得某些点不能位于直线上...,原因之一就是低阶多项式更常见,先验概率( P(h) )较大(原因之二则隐藏在 P(D | h) 里面),这就是为什么我们要用样条来插值,而不是直接 搞一个 N-1 阶多项式来通过任意 N 个点的原因。...如果硬要完美拟合 N 个点,你可能会整出一个 N-1 阶多项式来——设想身高和体重的关系是 5 阶多项式看看?...,特别,用 N-1 阶多项式便能够保证肯定能完美通过 N 个数据点。那么,这些可能的模型之中到底哪个是最靠谱的呢?前面提到,一个衡量的依据是奥卡姆剃刀:越是高阶的多项式越是繁复和不常见。

    1.2K50

    应如何设置HashMap容量的初始值?

    ,所以就不需要特别大,我们可能会想到用取余计算 hash % n,没错,hashMap源码的作者也是考虑到这个,因为在n,也即容量为2的n次方的时候 hash & (n-1) = hash % n,然后为什么不用取余的方法...,因为效率没有与运算高,与运算直接是二进制的运算,直接对内存数据进行计算,取余的还是用十进制数据计算,所以效率没有与运算高 然后为什么要使用n-1?...,举个例子,默认hashMap初始容量是16,n-1就是15,二进制是1111,然后试试其它的数据,其实发现n为2的n次方的情况,n-1其实都是1111…,然后为什么?...: hash & (n-1) 和 hash % n 在2的n次方的情况,会相等,而且与运算效率更高,所以计算数组下标使用hash & (n-1) n-1,在n为2的n次方的情况,结果都是1111…,所以进行与运算...,hash冲突的情况是很少的 本博客需要有一定的hashMap源码阅读经验,所以读者可以阅读之前博客,链接,然后再来学习这篇博客

    6.2K20

    编程实现“斐波那契数列”的5种方法! | 经典面试题

    计算一个f(n)到底需要有多少次递归调用呢? 我们可以在代码里加一个计数验证一下。...= f(n-1) + f(n-2) n>=2时 可以看出,每一个新的f(n),是前两个旧的f(n-1)和f(n-2)之和,一路递归下去,最终都将递归到f(0)和f(1)上来。...++){ arr[i]=arr[i-1]+arr[i-2]; } return arr[n]; } 这么正向的计算,只需要一个for循环,就能够计算出f(n)的值,时间复杂度是...于是得到: a1=1/√5 a2=-1/√5 于是最终得到: f(n)=(1/√5)*{[(1+√5)/2]^n -[(1-√5)/2]^n} 画外音:别问我为什么懂这些,TM作为计算机信息安全专业,...五、总结 斐波那契数列,不难; 但其思路有优化过程,并不简单: (1)递归法,f(45)能跑得死机; (2)正推法,O(n),正推计算,有点意思; (3)通项公式,本质转化为求a^n; (4)减治法求a

    2.2K20

    平凡而又神奇的贝叶斯方法

    此外曲线拟合也是,平面上 N 个点总是可以用 N-1 阶多项式来完全拟合,当 N 个点近似但不精确共线的时候,用 N-1 阶多项式来拟合能够精确通过每一个点,然而用直线来做拟合/线性回归的时候却会使得某些点不能位于直线上...,原因之一就是低阶多项式更常见,先验概率( P(h) )较大(原因之二则隐藏在 P(D | h) 里面),这就是为什么我们要用样条来插值,而不是直接搞一个 N-1 阶多项式来通过任意 N 个点的原因。...如果硬要完美拟合 N 个点,你可能会整出一个 N-1 阶多项式来——设想身高和体重的关系是 5 阶多项式看看?...,特别,用 N-1 阶多项式便能够保证肯定能完美通过 N 个数据点。那么,这些可能的模型之中到底哪个是最靠谱的呢?前面提到,一个衡量的依据是奥卡姆剃刀:越是高阶的多项式越是繁复和不常见。...为了解决这个循环依赖,总有一要先打破僵局,说,不管了,先随便整一个值出来,看你怎么变,然后再根据你的变化调整的变化,然后如此迭代着不断互相推导,最终收敛到一个解。这就是 EM 算法。

    57540

    动态编程:二项式序列

    二项式序列和它的变种问题一直都是的短板。从没简单得到答案,有时即使有了想法,也不能直接写出可以工作的代码。这是为什么这次决定尝试一种新的动态规划方法,并且阅读Skiena的前八章。...现在,我们能够提取的规律是--- 第[n, k] 个元素是 第 [n-1 , k] , [n-1, k-1]个元素的和。 那么,这和二项式原理有什么关系呢?回想一下,二项式数是像这样的: ?...我们既可以先选择第n 个元素,然后从剩下n- 1个元素中选取 k-1 个,也可以丢掉第n 个元素,从剩下n-1 个元素中选取k 个。我们在帕斯卡三角中看到的对称性在这里很明显。 现在来用代码实现它。...最后,从n个元素中选取1个,有n种方法。这就是我们需要的所有初始情况。 递归解如下图所示: ? 二项式序列-递归解 注意上面的解法中有很多被重复计算的子问题。...我们先用上文提到的初始情况来填充矩阵。(图中用了简单的方法,把所有值都初始化为1。这有些浪费)这里只有从n 中取1的情况没被表示。我们要计算得到这种情况。

    59830

    【算法学习】最短路径问题

    我们把点i到起点1的距离定义为dis【i】(现在知道上面为什么用dist了吧!)...等等,我们是不是还没提过为什么松弛n-1次后一定能得到最短路径? 1. 当没有负权回路时,对于超过n-1条边而到达起点1的路径,一定存在正值回路,肯定可以去掉; 2....当有负权回路时,我们可以无限次在回路里循环,让路径无限小,也就没有“最短路径了”。 因此,n-1次的松弛必然得到最短路径。 我们就基于2来判断负权回路。...这和BFS是一个道理,一边要保证有k-1轮大循环来控制,一面又要舍弃旧点增加新点,队列就可以有这个作用。所以当代码写出来是你会惊讶发现,它和BFS的形式是那么相似。...#网上很多资料提到SPFA都会提到邻接表,这里为了偷懒就随便讲下啦~~代码中用的是邻接矩阵存储的,请放心食用。

    3.8K10

    为什么 HashMap 的容量大小要设置为2的N次方?

    说,这个有用,这样才能充分利用分配的内存空间,减少哈希碰撞次数。他非和我试试,说可以,咱们先来看看源码。 什么是HashMap? 在弄懂标题的问题之前,首先需要清楚 HashMap 的概念。...0 : (h = key.hashCode()) ^ (h >>> 16); } 为什么不直接使用 key.hashCode()的值,我们后面会提到。...;       /* n 为数组容量, (n-1) & hash 则是计算索引值 */         if ((p = tab[i = (n - 1) & hash]) == null)             ...假如初始容量为2的3次数字8,当哈希值与容量大小减一的值进行与运算时可以保证结果比较均匀的分布在数组上。   ...哦,前面说为什么计算出来的散列值需要再让高16位和低十六位做异或运算,主要是让参与与运算的位同时具有高位和低位的特征,来减少哈希碰撞次数。

    1.4K00

    数学之美番外篇:平凡而又神奇的贝叶斯方法

    此外曲线拟合也是,平面上 N 个点总是可以用 N-1 阶多项式来完全拟合,当 N 个点近似但不精确共线的时候,用 N-1 阶多项式来拟合能够精确通过每一个点,然而用直线来做拟合/线性回归的时候却会使得某些点不能位于直线上...,原因之一就是低阶多项式更常见,先验概率( P(h) )较大(原因之二则隐藏在 P(D | h) 里面),这就是为什么我们要用样条来插值,而不是直接搞一个 N-1 阶多项式来通过任意 N 个点的原因。...如果硬要完美拟合 N 个点,你可能会整出一个 N-1 阶多项式来——设想身高和体重的关系是 5 阶多项式看看?...,特别,用 N-1 阶多项式便能够保证肯定能完美通过 N 个数据点。那么,这些可能的模型之中到底哪个是最靠谱的呢?前面提到,一个衡量的依据是奥卡姆剃刀:越是高阶的多项式越是繁复和不常见。...为了解决这个循环依赖,总有一要先打破僵局,说,不管了,先随便整一个值出来,看你怎么变,然后再根据你的变化调整的变化,然后如此迭代着不断互相推导,最终收敛到一个解。这就是 EM 算法。

    91250

    数学之美番外篇:平凡而又神奇的贝叶斯方法

    此外曲线拟合也是,平面上 N 个点总是可以用 N-1 阶多项式来完全拟合,当 N 个点近似但不精确共线的时候,用 N-1 阶多项式来拟合能够精确通过每一个点,然而用直线来做拟合/线性回归的时候却会使得某些点不能位于直线上...,原因之一就是低阶多项式更常见,先验概率( P(h) )较大(原因之二则隐藏在 P(D | h) 里面),这就是为什么我们要用样条来插值,而不是直接搞一个 N-1 阶多项式来通过任意 N 个点的原因。...如果硬要完美拟合 N 个点,你可能会整出一个 N-1 阶多项式来——设想身高和体重的关系是 5 阶多项式看看?...,特别,用 N-1 阶多项式便能够保证肯定能完美通过 N 个数据点。那么,这些可能的模型之中到底哪个是最靠谱的呢?前面提到,一个衡量的依据是奥卡姆剃刀:越是高阶的多项式越是繁复和不常见。...为了解决这个循环依赖,总有一要先打破僵局,说,不管了,先随便整一个值出来,看你怎么变,然后再根据你的变化调整的变化,然后如此迭代着不断互相推导,最终收敛到一个解。这就是 EM 算法。

    56220

    【简单了解系列】从基础的使用来深挖HashMap

    简单来说,就是序列化之后这个字段的值就会被干掉,用于一些不需要传递给第三的字段。...例如一个矩形,在本地使用的时候,有长、宽和面积三个属性,但是你要把这个对象给第三用,但是由于面积可以通过另外两个属性推导出来,这个key就不需要传递给第三了。...有的朋(杠)友(精)就要问了,为什么是16呢?13,14不他不香吗?我们接下来就要分析为什么不香。 当我们放元素进入map的时候,它是如何确定元素在table数组中的位置的呢?...16 // n 10000 15 // n-1 1111 14 // 1110 13 // 1101 12 // 1100 11 // 1011 10 //...用n-1而不用n也是因为同样的道理。如果这个值是2的幂,那么2的幂的值-1的所有二进制位数都是1,这样有利于hash计算的均匀分布。 综上所述,不一定是16,2的幂都可以,16只是一个经验值。

    42820

    【Java探索之旅】方法重载 递归

    一、方法重载 1.1 为什么要有方法重载 假设现在我们需要求两个数的和,要求根据数据的类型返回相应的返回值。那么就需要写一个整数和的方法、一个浮点数和的方法。...比如:方法中不能定义两个名字一样的变量,那为什么类中就可以定义方法名相同的方法呢? 方法签名即:经过编译器编译修改过之后方法最终的名字。...例如, 我们求 N! 起始条件: N = 1 的时候, N! 为 1. 这个起始条件相当于递归的结束条件 递归公式: 求 N! , 直接不好求, 可以把问题转换成 N! => N * (N-1)!...if(n == 1) { return 1; } return n * facTow(n-1); } public static void main(String..."); return 1; } int ret = n * facThree(n-1); System.out.println("方法结束"+" n = "+n+

    7610

    极客算法训练笔记(五),十大经典排序之冒泡,选择,插入排序

    排序算法衡量指标 关于排序算法的重要性就不啰嗦了,不重要你也遇不到这篇文章。...冒泡排序 这个排序不简单,大学里面每个学校都必教的一个排序 算法描述 给定一个N个元素的数组,冒泡法排序将: 比较一对相邻元素(a,b); 如果元素大小关系不正确,交换这两个数; 重复步骤1和2,直到我们到达数组的末尾...(最后一对是第(N-2)和(N-1)项,因为我们的数组从零开始) 第一次循环比较结束,最大的元素将在最后的位置。...选择排序 算法描述 给定 N 个项目和 L = 0 的数组,选择排序将: 在 [L ... N-1] 范围内找出最小项目 X 的位置, 将下限 L 增加1并重复步骤1直到 L = N-2。...下一篇写希尔,归并,快排和堆排序,还是按照这种格式,有收获的三连走起,欢迎关注是小魔女阿甘,扫码有惊喜哦。

    54220

    程序员看法上的几个典型错误

    见过一些人,他们知识渊博、见识广博,甚至理论可以给你阐述得冠冕堂皇,但是到了实际需要解决问题的时候,他们却拿不出巧妙的、优雅的办法,这是典型的象牙塔人。...想,对这些优秀的模式、原则、方法论,如果不能透彻掌握,不能根据实际场景合适运用,是不是反而不如对其不了解来的好呢?...关于英语 中国人为什么要学英语,程序员为什么要学英语,当我把那些方法名、变量名全部取成拼音,一样可以,谁下的这个破规定?...软件归根到底是用来解决问题的,提到算法就不能不提到数学(这也是为什么很多软件领域的大师都具备相当的数学背景),对于解决问题,这里可以简单归纳成两步: (1)把实际的问题抽象成简化的数学模型 (2)用算法去解决这个数学问题...另一面,程序员是要来解决问题的,经验不能代替解决问题,有的人具备更优秀的解决问题的能力,他为什么就不能得到更优厚的薪水?

    30910

    Python Algorithms - C4 Induction and Recursion and Reduction

    也正好对应着一个Induction式子,也可以换个方式理解,Induction是从n-1n的推导,而Recursion是从nn-1的递归(下面有附图可以帮助理解)。...[看书看到这里时,想起了另一个看起来很相似的问题,从n个元素中找出最大值和最小值。...如果我们单独来查找最大值和最小值,共需要(2n-2)次比较(也许你觉得还可以少几次,但都还是和2n差不多对吧),但是,如果我们成对来处理,首先比较第一个元素和第二个元素,较大的那个作为当前最大值,较小的那个作为当前最小值...对于单继承的语言这个很容易,顺着继承链一直往上找就行了,但是对于Python这类多重继承的语言则不简单,它需要更加复杂的策略,Python中使用了C3 Method Resolution Order,不懂...,想要了解的可以查看 on python docs] 本章后面作者提到了一些其他的内容 1.Strong Assumptions 主要对于Induction,为了更加准确方便n-1递推到n,常常需要对问题做很强的假设

    81630

    【Java SE】方法的使用

    直接调用现有方法开发, 不必重复造轮子. 1.2法的定义 // 方法定义 修饰符 返回值类型 方法名称([参数类型 形参 ...]){ 方法体代码; [return 返回值]; } 注意事项 修饰符:...注意: 方法名必须相同 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同) 与返回值类型是否相同无关 2.2法签名 方法签名即:经过编译器编译修改过之后方法最终的名字。...【百度百科】 … 由以上可得每移动n需要(2^n)-1步骤。 我们可以发现,要想移动所有的盘子,可以逆着思路推理。终止条件是将最底下一个盘子从起始位置移动到目标位置。...而上面n-1个盘子是可以借助目标位置先放在中转位置上面。再将最下面一个盘子放在目标位置上,然后将n-1个盘子借助起始位置放在目标位置上。...(pos3) return; } hanio(n-1,pos1,pos3,pos2);//将n-1个盘子从起始位置(pos1)借助中转位置(pos3)移动到目标位置(pos2

    31220

    java集合概念_java多线程

    2的n次方) HashMap的get(为什么重写equals方法需同时重写hashCode方法) HashMap的扩容(JDK8为什么需要重哈希) HashMap为什么是线程不安全的?...那么为什么会选择8和6这两个数字呢? 效率问题: 红黑树的平均查找长度是lg(n),而链表是n/2。...32 -> 100000; (n-1) - > 11111; n = 64 -> 1000000; (n-1) - > 111111; n = 128 -> 10000000; (n-1...) - > 1111111; 我们举例子验证一下,如下图: (a)是n=16时,key1与key2跟(n-1)与运算得到的二进制下标;(b)是扩容后n=32时,key1与key2跟(n-1)与运算得到的二进制下标...所以我们可以总结一下: 哈希值与原长度(注意是n不是n-1)进行与运算,判断多出来的那一位是0还是1 如果是0就留在原来的位置 如果是1就移动到(原下标 + 原长度)对应下标的新位置 这样做的好处除了不需要重新计算哈希值以外

    29620
    领券