返回值递归问题

遇到此问题的时候,如果运行递归要返回值的话,一般可以这样写 return 后面接递归的函数。

题目一:数字在排序数组中出现的次数

class Solution {
public:
    int GetNumberOfK(vector<int> data ,int k) {
        int number=0;
        if(data.size()!=0){
            int first=GetFirstk(data,k,0,data.size()-1);
            int last=GetLastk(data,k,0,data.size()-1);
            if(first>-1&&last>-1)number=last-first+1;
        }

        return number;
    }

    int GetFirstk(vector<int>&data,int k,int start,int end){
        if(start>end)return -1;
        int mid=(start+end)>>1;
        if(data[mid]==k){
            if((mid>0&&data[mid-1]!=k)||mid==0)return mid;
            else
                return GetFirstk(data,k,start,mid-1);
        }
        else{
             if(data[mid]>k)return GetFirstk(data,k,start,mid-1);
             else
                return GetFirstk(data,k,mid+1,end);
        }

    }

    int GetLastk(vector<int>&data,int k,int start,int end){
        if(start>end)return -1;
        int mid=(start+end)>>1;
        if(data[mid]==k){
            if((mid<data.size()&&data[mid+1]!=k)||(mid==data.size()-1))return mid;
            else
                return GetLastk(data,k,mid+1,end);
        }
        else{
             if(data[mid]<k)return GetLastk(data,k,mid+1,end);
             else
                 return GetLastk(data,k,start,mid-1);
        }

    }
};

题目二:二叉树的深度

class Solution {
public:
    int TreeDepth(TreeNode* pRoot)
    {
        if(!pRoot)return 0;
        return max(TreeDepth(pRoot->left),TreeDepth(pRoot->right))+1;

    }
};

原文地址:https://www.cnblogs.com/inception6-lxc/p/9296529.html

时间: 2024-10-06 06:10:38

返回值递归问题的相关文章

2017-3-5 函数 函数返回多个值 递归和菲波那契数列练习

(一)函数的定义:非常抽象,独立完成某项功能的独立个体. 作用:1提高代码的重用性 2提高功能开发的效率性 3提高程序代码的可维护性 函数分为   固定功能函数  高度抽象函数 函数的4要素:输入  输出  函数名  函数体 函数的多种形态: 1.   4要素齐全的 public static 返回值类型 函数名(需要的参数,可以多个,多种数据类型) { 函数体 return 返回返回值类型的数据 } 2.  有参数无返回值的 public ststic void 函数名(参数) { 函数体 }

python 复习 4-1 函数、参数、返回值、递归

函数 完成特定功能的一个语句组,这个语句组可以作为一个单位使用,并且给它组语句取一个名子,即函数名 可以通过函数名在程序不同地方多次执行,即函数调用 预定义函数(可以直接使用) 自定义函数(自编写的) 函数的定义: def 函数句([参数列表]): //定义 ``` def hello (): print(hello world) #### 函数的调用: - 函数名([参数列表]) //调用 hello() #### 函数的参数: 形式参数和实际参数 - 在定义函数时,函数名后面的括号中的变量名

python 递归调用 返回值问题

当使用递归时并有返回值时,调用自身函数时需要加上return语句如下: def daxiao(biao1,biao2): #判断两个列表的大小,根据里面的元素大小 #如果biao1大于biao2,返回1, #如果biao1小于biao2,返回0 #如果两者相等,返回3 geshu1=len(biao1) geshu2=len(biao2) b1=int(biao1[0]) b2=int(biao2[0])  #这里只能比较数值大小,不能通过字符串直接比较大小 print(biao1) print

具有返回值的递归

一个函数只能有一个返回值,具有返回值的递归函数若平行的多次调用自身,那么将会产生多个返回值,这是一个bug.所以在具有树形多分枝结构的递归中,一般使用void作为返回值类型,形参在每条路径中作为值传递,在出口处对这些值进行保存或比较输出.例如求树高 的两种写法: 1 struct Node{ 2 int val; 3 Node* child; 4 Node* sibling; 5 Node(){ 6 child=NULL; 7 sibling=NULL; 8 } 9 }; 10 int heig

第10天:apply和call、bind、函数作为参数、返回值使用、闭包、递归的样例

apply和call apply和call都可以改变this的指向 函数的调用,改变this的指向 函数名字.apply(对象,[参数1,参数2,.....]) 方法名字.apply(对象,[参数1,参数2,.....]) 方法名字.call(对象,参数1,参数2,.....) 方法名字.call(对象,参数1,参数2,.....) 不同的地方:参数传递是方式不一样 只要是想使用别的对象的方法,并且希望这个方法是当前对象的,那么久可以使用apply或者call的方法改变this的指向 apply

尾递归 递归函数中,递归调用是整个函数体中最后的语句,且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归,空间复杂度是O(1)

什么是递归深度 递归深度就是递归函数在内存中,同时存在的最大次数. 例如下面这段求阶乘的代码: Java: int factorial(int n) { if (n == 1) { return 1; } return factorial(n - 1) * n; } Python: def factorial(n): if n == 1: return 1 return factorial(n-1) * n C++: int factorial(int n) { if (n == 1) { re

javascript函数(声明,传参,返回值,递归)

javascript函数(声明,传参,返回值,递归) 1.函数的基本概念 函数:是由事件驱动的或者当他被调用时可执行的可重复使用的代码块. 空调是由遥控器控制或者当开关打开时,可运行的家用电器(工具) 特点: 封装代码----使代码更简洁 重复使用---在重复功能的时候直接调用就好 执行时机---随时可以在我们想要执行的时候执行 2.函数的创建和执行 1. 函数的创建 1.声明式 函数声明的关键字 : ==function== function 关键字 和 var 关键字的行为几乎一致,都会在内

循环递归+返回值(TreeView示例)

示例:获取TreeView的所有Node,保存到List<TreeNode>,封装到通用工具类: 方法一:使用static方法.属性---调用前清空static类型的List 1 public static List<TreeNode> allNodes = null; 2 public static void GetTreeViewAllNodes(TreeNodeCollection Nodes) 3 { 4 foreach (TreeNode node in Nodes) 5

GetLastError()函数返回值及含义

GetLastError返回的值通过在api函数中调用SetLastError或SetLastErrorEx设置.函数并无必要设置上一次错误信息,所以即使一次GetLastError调用返回的是零值,也不能担保函数已成功执行.只有在函数调用返回一个错误结果时,这个函数指出的错误结果才是有效的.通常,只有在函数返回一个错误结果,而且已知函数会设置GetLastError变量的前提下,才应访问GetLastError:这时能保证获得有效的结果.(来源:百度百科) 在进行windows网络编程时,可以