1. 程式人生 > >C 裡 求 log2 N 的問題

C 裡 求 log2 N 的問題

今天 在 寫 二叉樹 的 順序儲存方式時,遇到了 一個數學問題。

 已知,節點數 為 n 的 完全 二叉樹的 深度 k 為  : k = log2 N + 1,log2N向下取整。查了 一下 C 裡 math.h 只有 log 和 log10 的函式。log 是 以 e 為底數, log10 是以 10 為底數,那怎麼 求 以2為底的樹呢?

 百度了 一下 才 知道   log2n = In(N) / In(2)  ,In 是 以 e 為底數的,其值是2.71828...,用到了對數的 換底公式。

數學學的好,對於 一個軟體開發人員是很重要的。哎。。上網查了一下,對數的其他公式,以便以後 溫故。

1、
2、 3、 4、 5、 換底公式  下面上程式碼:
// log2.cpp : 定義控制檯應用程式的入口點。
//

#include "stdafx.h"
#include <math.h>


int _tmain(int argc, _TCHAR* argv[])
{
	int result = log(16.0)/log(2.0);
	printf("%d",result);
	return 0;
}
輸出: 4