递归和尾递归
// 递归求5!
// 基本递归
#include <stdio.h> int fun(int n) { if (1 == n) { return 1; } else { return n*fun(n-1); } } int main(int argc, char *argv[]) { int num; scanf("%d", &num); // 输入num的值,要求大于1 printf("%d! = %d", num, fun(num)); return 0; } 输入 5 输出: 5! = 120
// 尾递归
// 1.当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归
// 2.尾递归调用,其实最精髓就是通过参数传递结果,达到不压栈的目的。
#include <stdio.h> int fun(int n, int temp) { if (1 == n) { return temp; } else { fun(n-1, temp*n); } } int main(int argc, char *argv[]) { int num; int sum = 1; scanf("%d", &num); // 输入num的值,要求大于1 printf("%d! = %d", num, fun(num, sum)); return 0; } 输入: 5 输出: 5! = 120
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)