c++ 求以2为底的对数,程序代码
答案:3 悬赏:80 手机版
解决时间 2021-03-31 13:22
- 提问者网友:雨不眠的下
- 2021-03-31 06:11
c++ 求以2为底的对数,程序代码
最佳答案
- 五星知识达人网友:不想翻身的咸鱼
- 2021-03-31 06:17
c++ 求以2为底的对数的程序代码:
#include
#include
double eff=1e-5;
double static x;
double static n=0;
double b(double i)
{
if(0==i) return 1;
return b(i-1)/2;
}
double a(double i)
{
if(0==i) return x;
if(pow(a(i-1),2)<2) return pow(a(i-1),2);
if(pow(a(i-1),2)>=2) return pow(a(i-1),2)/2;
}
double S(double i)
{
if(0==i) return 0;
if(pow(a(i-1),2)<2) return S(i-1);
if(pow(a(i-1),2)>=2)return S(i-1)+b(i);
}
double log2(double x)
{
if(x>0 && x<1) return -log2(1/x);
if(x>pow(2,n)) return n+log2(x/pow(2,n));
if(x>=1 && x<2) return S(n);
}
int main()
{
cout<<"请输入x:"< cin>>x;
double b0=1;
while(1)
{
b0=b0/2;
if(b0<=eff)
break;
else
n++;
}
cout< return 0;
}
c++ :
C++是在C语言的基础上开发的一种面向宇宙编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。最新正式标准C++14于2014年8月18日公布。其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性。
#include
#include
double eff=1e-5;
double static x;
double static n=0;
double b(double i)
{
if(0==i) return 1;
return b(i-1)/2;
}
double a(double i)
{
if(0==i) return x;
if(pow(a(i-1),2)<2) return pow(a(i-1),2);
if(pow(a(i-1),2)>=2) return pow(a(i-1),2)/2;
}
double S(double i)
{
if(0==i) return 0;
if(pow(a(i-1),2)<2) return S(i-1);
if(pow(a(i-1),2)>=2)return S(i-1)+b(i);
}
double log2(double x)
{
if(x>0 && x<1) return -log2(1/x);
if(x>pow(2,n)) return n+log2(x/pow(2,n));
if(x>=1 && x<2) return S(n);
}
int main()
{
cout<<"请输入x:"<
double b0=1;
while(1)
{
b0=b0/2;
if(b0<=eff)
break;
else
n++;
}
cout<
}
c++ :
C++是在C语言的基础上开发的一种面向宇宙编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。最新正式标准C++14于2014年8月18日公布。其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性。
全部回答
- 1楼网友:轻雾山林
- 2021-03-31 08:32
C语言上面不是直接有函数可以用么?
- 2楼网友:不想翻身的咸鱼
- 2021-03-31 07:35
你的log2方法有问题吧
首先你的n的值是固定的,不同的x的值的情况下n固定。
其次,肯能没有返回值。
double log2(double x)
{
if(x>0 && x<1) return -log2(1/x);
if(x>pow(2,n)) return n+log2(x/pow(2,n));
if(x>=1 && x<2) return S(n);
}
分析,当x>2并且小于pow(2,n)的情况下怎么样?
递归不到了。
有问题。
首先你的n的值是固定的,不同的x的值的情况下n固定。
其次,肯能没有返回值。
double log2(double x)
{
if(x>0 && x<1) return -log2(1/x);
if(x>pow(2,n)) return n+log2(x/pow(2,n));
if(x>=1 && x<2) return S(n);
}
分析,当x>2并且小于pow(2,n)的情况下怎么样?
递归不到了。
有问题。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯