《数据结构》第一天附加内容
算法和数据结构
写程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从一到N的全部正整数。
(1)通过循环
1 #include<stdio.h> 2 void PrintN(int N); 3 int main() 4 { 5 int N; 6 scanf("%d", &N); 7 PrintN(N); 8 } 9 void PrintN(int N) { 10 int i; 11 for(i=1;i<=N;i++){ 12 printf("%d\n",i); 13 } 14 return; 15 16 17 }
(2)通过递归
1 #include<stdio.h> 2 void PrintN(int N); 3 int main() 4 { 5 int N; 6 scanf("%d", &N); 7 PrintN(N); 8 } 9 void PrintN(int N) { 10 if(N){ 11 PrintN(N-1); 12 printf("%d\n",N); 13 } 14 return; 15 }
让他们分别进行十万级别的运算
递归方法会出现以下问题
出现这种问题的主要原因是:
在做打印运算时,对递归100000,系统罢工---
递归:
一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法;
递归函数就是直接或间接调用自身的函数,也就是自身调用自己
递归算法效率较低,占用栈空间较大,容易发生栈溢出.
递归分为2种,直接递归和间接递归。
直接递归,比如方法A内部调用方法A自身
间接递归,比如方法A内部调用方法B,方法B内部调用方法C,方法C内部调用方法A
本文来自博客园,作者:Colin_Cora,转载请注明原文链接:https://www.cnblogs.com/Colincora/p/15430691.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】