当前位置:网站首页>1143_ SiCp learning notes_ Tree recursion
1143_ SiCp learning notes_ Tree recursion
2022-07-06 13:50:00 【grey_ csdn】
All learning summary :GitHub - GreyZhang/g_SICP: learn SICP and hack lisp.

A typical example of tree recursion is the solution of Fibonacci sequence , The above is a simple definition rule description . This description can be easily converted into a recursive function by code , The last screenshot of the above document is lisp How to implement .

If the replacement model is used for expansion , This is the solution process of Fibonacci sequence . It can be seen from here that , Half the work is actually repetitive . In fact, it can be analyzed from the characteristics of the code itself , Because every recursion calls the function twice .

This is an optimization of Fibonacci sequence solution , In fact, the optimization method is mainly aimed at the iterative part in the previous formula . In previous software design , The state saving and other work of these two parts are actually completely entrusted to the parser . And the improved way , Make a transition between the two maintenance states , In fact, the saving of some temporary information is not completely handled by the parser, but put into memory . The design of software is actually very easy to understand .

This is a test of the above software design . Equivalent functions can also be easily used python To do a writing test .
def fib(n):
if n <= 1:
return n
else:
return fib(n - 1) + fib(n - 2)
def fib_iter(a, b, n):
if n == 0:
return b
else:
return fib_iter(a + b, a, n - 1)
def new_fib(n):
return fib_iter(1, 0, n)
The computational effect of both languages is the same . I also compared the solution method with the first scheme , Solve in the computer fib(100) The process is very long . And the improved way , In fact, it has good execution efficiency , Whether it's lisp still python.

Here is another classic question : The combination of coins . The disassembly of this problem is divided into two steps , Described as the colored part above . About this description , In my own understanding, I should consider this : All the combination methods actually have 2 Kind of , One is that the first kind of coins are not used ; The other is the case of using at least one coin of the first kind . Then the case of using at least one coin of the first kind can be considered as the total amount minus the face value of one coin of the first kind , Any combination of the remaining amounts . such , It's easy to build the following recursive program .

such , Basically finished reading the content of tree recursion . Through the study of this chapter , I still see a useful way of thinking . however , The realization of many laws or methods is actually supported by certain data theory to a great extent . look , Mathematics is also a very important tool and method .
边栏推荐
- 2022 Teddy cup data mining challenge question C idea and post game summary
- C language to achieve mine sweeping game (full version)
- [during the interview] - how can I explain the mechanism of TCP to achieve reliable transmission
- 5月14日杂谈
- Zatan 0516
- MySQL中count(*)的实现方式
- JS interview questions (I)
- 实验五 类和对象
- [dark horse morning post] Shanghai Municipal Bureau of supervision responded that Zhong Xue had a high fever and did not melt; Michael admitted that two batches of pure milk were unqualified; Wechat i
- Mortal immortal cultivation pointer-1
猜你喜欢

MATLAB打开.m文件乱码解决办法

编写程序,模拟现实生活中的交通信号灯。

Caching mechanism of leveldb

Mode 1 two-way serial communication is adopted between machine a and machine B, and the specific requirements are as follows: (1) the K1 key of machine a can control the ledi of machine B to turn on a

Redis的两种持久化机制RDB和AOF的原理和优缺点

5. Function recursion exercise

9. Pointer (upper)

Reinforcement learning series (I): basic principles and concepts

2. C language matrix multiplication

扑克牌游戏程序——人机对抗
随机推荐
Using qcommonstyle to draw custom form parts
3. Input and output functions (printf, scanf, getchar and putchar)
Miscellaneous talk on May 14
Implementation principle of automatic capacity expansion mechanism of ArrayList
3.输入和输出函数(printf、scanf、getchar和putchar)
Using spacedesk to realize any device in the LAN as a computer expansion screen
TypeScript快速入门
[中国近代史] 第六章测验
C语言入门指南
实验八 异常处理
[the Nine Yang Manual] 2017 Fudan University Applied Statistics real problem + analysis
稻 城 亚 丁
Beautified table style
优先队列PriorityQueue (大根堆/小根堆/TopK问题)
The latest tank battle 2022 - full development notes-3
【头歌educoder数据表中数据的插入、修改和删除】
简单理解ES6的Promise
20220211-CTF-MISC-006-pure_ Color (use of stegsolve tool) -007 Aesop_ Secret (AES decryption)
为什么要使用Redis
[the Nine Yang Manual] 2021 Fudan University Applied Statistics real problem + analysis