题解 | 二叉树
#include <bits/stdc++.h> using namespace std; int ans=0; void countT(int a,int n){ if(a>n)return; ans++; countT(a*2,n); countT(a*2+1,n); } int main(){ int m,n; while(cin>>m>>n){ countT(m,n); cout<<ans<<endl; ans=0; } }
本题主要分享一下递归的写法,本题用递归是显而易见的,递归的写法个人的习惯是先写出来递归的过程,然后写递归中的操作,这里的递归就是二叉树的向下移动,直到超越边界结束,移动就是*2 和 *2+1,然后写递归过程,就是统计。最后因为我们的ans用的全局变量,所以别忘了归零