如何在c ++中查找基数为10的递归日志

时间:2014-06-15 12:07:32

标签: c++

我刚开始学习递归函数,我正在寻找以递归方式查找基数10的日志,我已经想出了以下的迭代方法:

#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 ??

我真的不能想到递归函数请帮帮我

1 个答案:

答案 0 :(得分:1)

递归的基本思想是通过反复将其简化为可以直接解决的较小问题来解决无法直接解决的问题。

为了说明这一点,请采用Fibonacci数字,定义如下:

  • f(0)= 0
  • f(1)= 1
  • f(n)= f(n-1)+ f(n-2)

使用此定义,您无法直接获得所有Fibonacci数,只能获得n = 0且n = 1的Fibonacci数。要计算n = 2的斐波纳契数,请执行以下操作:

  • f(2)= f(2-1)+ f(2-2)= 1 + 0 = 1

对于n = 3:

  • f(3)= f(3-1)+ f(3-2)= f(2-1)+ f(2-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)!