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

参考网址: 点击打开链接

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值