如何在c++中找到以10为底的递归对数

How to find recursivley log of base 10 in c++

本文关键字:递归 c++      更新时间:2023-10-16

我刚刚开始学习递归函数,我正在寻找以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
为n = 3:

  • (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)的情况!