杂七杂八的复习(二)

目录

递归 vs 迭代

数组和链表在内存上的比较

数组和链表在缓存上的比较

数组存储在栈上和堆上

为什么数组要求相同类型的元素,而链表不用?

单向函数在密码学的重要性

伪随机数在密码学的重要性

区块链的理解

量子密码的理解


递归 vs 迭代

递归是反复执行一段代码,直到满足条件,然后输出结果;是一种自下而上的解决方法,从基础的问题开始解决,然后不断重复这些步骤,直到任务完成;

迭代是函数反复调用自身,向下传递更小更简化的参数,直到满足终止条件,然后向上返回函数值,从而归纳出输出结果。是一种自上而下的解决方法,将原问题划分为多个子问题,子问题的形式与原问题一致,不断向下划分,直到已知解的基础情况,然后向上归纳出结果。

由于迭代涉及到函数的调用,因此迭代占用的空间更大,时间开销也大。每次函数调用,系统会为其分配栈空间,来存储函数的参数、返回地址等数据。如果迭代次数过多,可能会涉及到栈溢出。

数组和链表在内存上的比较

数组元素不需要额外的指针,指向下一个元素,因此空间利用率高于链表元素。但是数组在内存上需要划分足够连续的空间,可能导致内存的浪费,并且数组的扩容也需要额外的时间和空间开销。

链表元素离散的存储在内存空间上,以节点为单位,可以动态的分配和回收内存空间,操作更灵活。随着反复的分配和回收内存空间,可能会导致空闲的内存空间碎片化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值