从1到100求和学算法思维(四)

简介: 从1到100求和学算法思维(四)

问题描述

上一篇通过递归算法实现整数n从100逐渐递减到1,然后将每一个递减的整数累加到变量sum中,这是一种单向的递减操作,如图:

单向的递减最主要的问题在于下降速度过慢,是否有更快的遍历速度呢?相信聪明的您可能已经发现,那就是使用双向的速度来遍历。


思路已经有了,那接下来如何利用代码编程实现呢?需要注意的地方有哪些呢?

解决方案


单向递减我们的做法是:

void foo(int n){


   if( n==0) return ;


   foo(n-1);

}


为描述方便,其余部分略过。要想实现双向,就必须得有两个控制变量。

void foo(int i, int j){


   foo(i+1, j-1);

}


让变量i实现自增,变量j实现自减,但是什么时候递归结束呢?答案就是i超过j的时候,得出代码为:

void foo(int i, int j){

   if( i > j) return ;


   foo(i+1, j-1);

}

注:在使用递归函数的时候,切记不要忘记递归结束的条件。


学会了变量i和变量j的双向控制,最后将每一次递减后的变量i和变量j累加到sum即可。



结语

本文为大家介绍了一种新的思维方式来实现递归,可能大家在阅读本文的时候觉得很简单,但是这种思维却是今后解决复杂递归问题的基础,如果缺乏这种思维方式,复杂的问题一定难以解决。这也是本系列文章要为大家传达的核心理念:透过简单的问题来学习复杂的算法思维,帮助大家更好的理解复杂问题。

目录
相关文章
|
22天前
|
存储 算法 容器
set_map的实现+set/map加持秒杀高频算法题锻炼算法思维
`set`基于红黑树实现,支持有序存储、自动去重,增删查效率为O(logN)。通过仿函数可自定义排序规则,配合空间配置器灵活管理内存。不支持修改元素值,迭代器失效需注意。`multiset`允许重复元素。常用于去重、排序及查找场景。
|
6月前
|
机器学习/深度学习 算法 Python
matlab思维进化算法优化BP神经网络
matlab思维进化算法优化BP神经网络
|
存储 算法 Python
“解锁Python高级数据结构新姿势:图的表示与遍历,让你的算法思维跃升新高度
【7月更文挑战第13天】Python中的图数据结构用于表示复杂关系,通过节点和边连接。常见的表示方法是邻接矩阵(适合稠密图)和邻接表(适合稀疏图)。图遍历包括DFS(深度优先搜索)和BFS(广度优先搜索):DFS深入探索分支,BFS逐层访问邻居。掌握这些技巧对优化算法和解决实际问题至关重要。**
177 1
算法思维之穷举法
算法思维之穷举法
|
算法
常用的简单校验算法:校验和,异或校验,crc校验,LRC校验,补码求和,checksum
常用的简单校验算法:校验和,异或校验,crc校验,LRC校验,补码求和,checksum
2541 1
|
算法 前端开发
前端算法-二进制求和
前端算法-二进制求和
|
算法 vr&ar
1611F - ATM and Students详细题解(*1800,线段树维护前缀和;双指针算法(思维))
1611F - ATM and Students详细题解(*1800,线段树维护前缀和;双指针算法(思维))
113 0
|
算法
增强能力:提升专业知识、熟练职业技能、持续总结面试题、英语词汇、学习数据结构和算法(提升逻辑思维)
增强能力:提升专业知识、熟练职业技能、持续总结面试题、英语词汇、学习数据结构和算法(提升逻辑思维)
119 0
|
机器学习/深度学习 人工智能 算法
基于思维进化算法优化BP神经网络(Matlab代码实现)
基于思维进化算法优化BP神经网络(Matlab代码实现)
238 0
|
算法 搜索推荐
【1到100求和学算法】1#开篇
【1到100求和学算法】1#开篇
149 0

热门文章

最新文章