使用递归的方法计算一个正整数的阶乘,正整数从键盘输入。

代码如下:

import java.util.Scanner;
static int 递归阶乘(int n) {if (n == 2)return 2;return n * 递归阶乘(n - 1);
}public static void main(String[] args) {int num = getScannerInt();System.out.println(递归阶乘(n));
}

}
看似没有任何问题,但eclipse提示第18行有一个错误

编译之后结果如下

不能将n解析为变量?!此刻的我还是找不出哪里错了。
想到此程序中定义的变量只有两个,一个n,一个num。难道这里应该是num?先试一下吧!

public static void main(String[] args) {int num = getScannerInt();System.out.println(递归阶乘(num));
}

神奇的事情发生了,竟然没有了错误。但还是不确定程序能否运行。
于是运行程序计算5!,答案120,竟然歪打正着。
那么为什么递归这里不是n,而是num呢?debug一下看看。此时,我明白了。num保存的是键盘输入的值,num!=5!,看来一开始就理解错了。真是差之毫厘,谬之千里。

差之毫厘,谬之千里——函数的递归!相关推荐

  1. 生成器/迭代器 和 函数的递归

    生成器 一个包含yield关键字的函数就是一个生成器函数.yield可以为我们从函数中返回值,但是yield又不同于return,return的执行意味着程序的结束,调用生成器函数不会得到返回的具体的 ...

  2. python之路--嵌套函数、匿名函数、高阶函数。函数的递归

    嵌套函数 函数里不仅可以写代码,还可以嵌套函数 name = "小猿圈"def change():name = "小猿圈,自学编程"def change2(): ...

  3. 三目运算法求一个大值,以及指定位数的应用,以及函数的声明,以及函数的嵌套,以及函数的递归,以及用递归法求阶乘

    1.三目运算法 首先一般方法比较两个数的大小 用空格和回车都一样 当结果非x即y的时候 我们可以用三目运算法 z=x>y?x:y 如果表达式成立取前面的值,如果表达式不成立取后面的值 也可以改成 ...

  4. Python函数的递归调用

    一:递归的定义 函数的递归调用:是函数嵌套调用的一种特殊形式 具体是指: 在调用一个函数的过程中又直接或者间接地调用到本身 # 直接调用本身 def f1():print('是我是我还是我')f1() ...

  5. 函数的递归调用(专题)

    函数的递归调用(专题) 递归调用:函数的递归调用,就是函数在执行的时候自动调用自己! 功能:当我们把一个大问题按照某种解决方案细化为若干个小问题的时候,结果我们发现这些小问题的解决方案又和前面大问题的 ...

  6. mysql通过函数完成10的阶乘_请使用函数的递归调用编写求阶乘的函数,并计算1!+2!+3!+4!+5!...

    点击查看请使用函数的递归调用编写求阶乘的函数,并计算1!+2!+3!+4!+5!具体信息 答:include "stdio.h" int fac(int k) { if(k==1) ...

  7. Day05:装饰器,三元表达式,函数的递归,匿名/内置函数,迭代器,模块,开发目录...

    上节课复习: 1.函数的对象     函数可以被当作数据取处理 2.函数嵌套     嵌套调用:在调用一个函数时,函数体代码又调用了其他函数     嵌套定义:在一个函数内部又定义了另一个函数 1 d ...

  8. python中递归函数的基例_详谈Python基础之内置函数和递归 Python递归和循环的区别...

    Python 递归函数基例 2. 关于递归函数基例的说明,以下选项中错误的是 A 递归函数的基例决定所谓基例就是不需要递归就能求解的,一般来说是问题的最小规模下的解. 例如:斐波那契数列递归,f(n) ...

  9. python装饰器模式带参数_Python进阶(七)----带参数的装饰器,多个装饰器修饰同一个函数和递归简单案例(斐波那契数列)...

    Python进阶(七)----带参数的装饰器,多个装饰器修饰同一个函数和递归简单案例(斐波那契数列) 一丶带参数的装饰器 def wrapper_out(pt): def wrapper(func): ...

最新文章

  1. tm matlab,[转载]关于matlab中textread
  2. mysql5.7单机多实例_Mysql 5.7.21单机多实例安装
  3. 【开发技术】视频URL采集
  4. linux cisco路由器,怎样让linux做cisco路由器的专用日志服务器
  5. python获取数组中最多的元素
  6. JavaScript实现longestCommonSubsequence最长公共子序列算法(附完整源码)
  7. Java BufferedReader skip()方法与示例
  8. matlab 30案例 目录,MATLAB-智能算法30个案例分析-终极版(带目录).doc
  9. NHibernate初探(五) 多对多关系测试示例
  10. 汇编语言基础之二 - 各种寻址和过程进出简介
  11. 嵌入式字符设备驱动——ULN2003步进电机驱动程序实现
  12. 华为云盘(华为云空间)免费空间
  13. HIVE中 ROW_NUMBER() OVER() 函数
  14. cocos2dx android工程接入联通Unipay sdk
  15. python - 数据类型
  16. 8个提高摸鱼效率的python自动化脚本,提高打工人幸福感~
  17. ArcGIS(ESRI)的发展历史和版本历史(简介)
  18. mysqlit根据稀有值随机选择_三中锋教练来过了!实况足球20赛季DP7.0后新增稀有阵型top10...
  19. 华为 2017 实习生招聘笔试题
  20. linux多网卡配置ip地址(linux一个网卡配置多个ip)

热门文章

  1. nagios添加监控服务
  2. Word处理代码文本之删除注释与空行
  3. C/C++面试笔试详细总结—基本概念及其它问答题
  4. 【Web技术】192- JS 社区臭名昭著的一个问题
  5. js中获取html元素之document.documentElement
  6. C++设计模式之建造者模式(三)
  7. Awk的一些使用方法
  8. 建设一个官网企业网站需要多少成本?
  9. 甘肃临洮玉琢冰雕造“梦幻仙境”
  10. 人工智能----语音助手