递归方法求5!

#include <stdio.h>

long f(int n){
	if(n==1){
		return 1;
	}else{
		return n * f(n-1);
	}
}
int main()
{
	int m = 5;
	long f(int n);
	
	printf("5!= %d\n", f(m));
	
	return 0;
 } 

学习到:

  1. 递归调用
    一个函数 在他函数体内 调用自身 成为递归调用
  2. 递归函数体内有两种情况
  • 到达最底部(最后一步),然后返回
  • 还没到达最后一步,就需要一直分离,继续往下走
    eg:
//这是递归函数定义,但是最好不要有两个出口
int f(int n){
  if(n==1){
    return 1;
  }else{
    retrun n*f(n-1);
  }
}
//改进
int f(int n){
   int c;
  if(n==1){
     c = 1;
    //return 1;
  }else{
    c = n*f(n-1);
    //retrun n*f(n-1);
  }
  return c;
}
3. 递归函数思路
* 形式:式子可以分离成f(n) = n*f(n-1)但不限于n*函数,
* 内容:
1是到了递归尽头,需要有确切返回值给上层函数计算,计算后,才能保证整个递归函数有结果
2没到尽头则继续递归
总结:无论那种情况都要对上层函数负责,保证其返回值,不然递归失去了连续性
posted @   行至为成  阅读(431)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示