编程中的递归、哈希计算与网络地址计算
1. 递归函数分析
递归函数在代码编写中具有一定的美学价值,但在性能方面可能存在问题。以一个斐波那契数列相关的递归函数为例:
#include <stdio.h>
void fib (int a, int b, int limit)
{
int next=a+b;
printf ("%d\n", next);
if (next > limit)
return;
fib (b, next, limit);
};
int main()
{
printf ("0\n1\n1\n");
fib (1, 1, 20);
};
在非优化的 MSVC 中, next 变量会被分配在本地栈中。其汇编代码如下:
_next$ = -4
; size = 4
_a$ = 8
; size = 4
_b$ = 12
; size = 4
_limit$ = 16
; size = 4
_fib
PROC
push ebp
mov ebp, esp
push ecx
mov eax, DWORD PTR _a$[ebp]
add eax, DWORD PTR _b$[ebp]
mov DWORD PTR _next$[ebp], eax
mov ecx, DWORD PTR _next$[ebp]
超级会员免费看
订阅专栏 解锁全文
10万+

被折叠的 条评论
为什么被折叠?



