如何在c++中找到以10为底的递归对数
How to find recursivley log of base 10 in c++
我刚刚开始学习递归函数,我正在寻找以10为底的log的递归方法,我已经找到了迭代的方法,如下:
#include<iostream>
using namespace std;
int main(){
int i=1,number,c=0;
cout<<"Enter a number whose log is to be calculated"<<endl;
cin>>number;
while(i!=number){
i=i*10;
c++;
}
cout<<"The log is"<<c<<endl;
system("pause");
}
现在递归函数应该是基本情况,如:
if (number==10)
return 1;
else ??
我实在想不出递归函数,请帮帮我
递归的基本思想是通过将不能直接解决的问题反复简化为可以直接解决的小问题来解决它。
为了说明这一点,以斐波那契数为例,定义如下:
- f(0) = 0
- f(1) = 1
- f(n) = f(n-1)+f(n-2)
使用这个定义,你不能直接得到所有的斐波那契数,只能得到n=0和n=1的斐波那契数。要计算n=2时的斐波那契数,您可以执行以下操作:
- f(2) = f(2-1)+f(2-2) = 1+0 = 1
- (3) = f (3 - 1) + (3 - 2) = f f (2 - 1) + (2) + 1 = 1 + 0 + 1 = 2
等等
对于你的问题,你知道
- log10(10) = 1
你用
这个事实- log10 (10 * x) = log10 (10) + log10 (x) = 1 + log10 (x)
这是你的递归函数。
注意:使用这个定义,你假设你的输入x的形式是10^n和整数n,否则,你将不会达到log10(10)的情况!
相关文章:
- 通过递归进行因子分解
- 递归函数计算序列中的平方和(并输出过程)
- 使用递归的数组的最小值.这是怎么回事
- 递归列出所有目录中的C++与Python与Ruby的性能
- 递归计数给定目录的文件和所有目录
- 如何在BST的这个简单递归实现中消除警告
- C++:正在检查LinkedList中的回文-递归方法-错误
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 递归无序映射
- TSP递归解的迭代形式
- 如何在Elixir中调用递归函数并行
- 返回递归调用和仅递归调用的区别
- 数组元素打印的递归方法
- 使用递归时获取变量的奇怪值
- 如何在C++中递归地按相反顺序打印集合
- 到连接组件算法的问题(递归)
- 如何使用递归打印修改后的星号三角形图案
- 使用递归模板动态分配的多维数组
- 递归函数有效,但无法记忆
- 包含模板文件的递归会导致编译失败