递归基础认识 从快速幂开始

我这个菜鸟真的弱爆了~~弱爆了~~以前竟然在写着超级垃圾的快速幂,彻底服了自己~~无语~~实在无语

program1(弱智快速幂取模)

图1:猴子爬下去:

图2:猴子很老实滴爬回来

#include<iostream>
using namespace std;
//求2^N%2012 
int fn(int n) 
{
  if(n==1)return 2;
  else  
  {
    if(n%2==0)return (fn(n/2)  *  fn(n/2)) %2012;    //一直分割,分割个蛋啊~~蛋疼~~

                                                                             //直接到底再上来~~就只是一次爬上爬下而已~
    return    (2 * fn(n/2)  *  fn(n/2) ) %2012;
  }    
} 
int main()
{
int n;
while(cin>>n)
{
   cout<<fn(n)<<endl;
                
} 
    
return 0;} 


 

program:(菜鸟真正入门版:直接对应上图)

 

#include<iostream>
using namespace std;
//求2^N%2012 
int fn(int n) 
{
  if(n==1)return 2;
  int tmp=fn(n/2);                                  //猴子爬到底//其实用int tmppp=tmp*tmp可优化
  if(n%2==0)return tmp*tmp%2012;    //回来的时候大步向前就可以了,偶尔再捡多个东西,卧槽~~
  return    (2 * tmp * tmp) %2012;
      
} 
int main()
{
int n;
while(cin>>n)
{
   cout<<fn(n)<<endl;
                
} 
    
return 0;} 



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值