C 裡 求 log2 N 的問題
阿新 • • 發佈:2019-01-09
今天 在 寫 二叉樹 的 順序儲存方式時,遇到了 一個數學問題。
已知,節點數 為 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、// 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