A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 984326157 中级黑马   /  2015-7-16 10:29  /  754 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


题目:请用递归方法5!。简化后的代码如下:
  1. #include <stdio.h>
复制代码
只有两个函数,每个函数中一句代码,虽然可读性不高,但是很精简。一次我肯定不能写出来,这就是靠一步一步的优化得到的。面就说说我是如何一步一步简化代码的过程:
第一步:
  1. //写一个递归函数求阶乘
复制代码
第二步:简化递归函数,使用条件运算符代替if else语句
  1. //写一个递归函数求阶乘
  2. int fnf(int n){
  3. int fn;//定义一个整形变量,表示n!
复制代码
第三步:减少变量的定义,把表达式直接作为返回值或参数就形成了第一段简化后的代码。








1 个回复

正序浏览
int fnf(int n){

    return (n==1?1:fnf(n-1)*n);
}
int main(int argc,const char *argv[])
{

    printf("%d! = %d",5,fnf(5));
   
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马