哔哩哔哩数据结构讲解地址:https://space.bilibili.com/356198029

递归代码视频讲解地址:https://www.bilibili.com/video/av67746367

#include<stdio.h>
int fun(int n)
{
    if(n<=1)
        return 1;
    else
        return n + fun(n-1);
}
int fun1(int n)
{
    if(n<=1)
        return 1;
    else
        return n + fun1(n-1);
}
//双向递归
int doublefun(int n)
{
    if(n<=1)
        return 1;
    else
        return n + doublefun(n-1) +  doublefun(n-2);
}
//递归二分查找 递归简单运用
int search(int n,int arr[],int min,int max)
{
    printf("min=%d,max=%d\n",min,max);
    if(min < max)
    {
        int mid = (min+max)/2;
        if(n == arr[mid])
            return mid;
        else if(n < arr[mid])
            return search(n,arr,min,mid-1);
        else if(n > arr[mid])
            return search(n,arr,mid+1,max);
    }
    else
        return -1;
}

int mian()
{
    int arr[101];
    for(int i=0;i<100;i++) arr[i] = 2*i;

    printf("%d\n",search(78,arr,0,100));
    printf("%d\n",search(9,arr,0,100));//注意min,max为下标,即有多少个数字
    return 0;
}

哔哩哔哩数据结构讲解地址:https://space.bilibili.com/356198029

递归代码视频讲解地址:https://www.bilibili.com/video/av66286422

//注意 这个是无法运行的伪代码

#include<stdio.h>
int main()
{

    for(int i=0;i<1000000;i++)
        printf("Hello World \n");

    return 0;
}
//答案是:O(1) 常数级别的都是 O(1)


#include<stdio.h>
void fun(int n)
{

    for(int i=0;i<n;i++)
        printf("Hello World \n");

    return 0;
}

//答案是:O(n) 与问题的规模n有关 n取多少就执行多少次 所以是 O(n)


void function1(int n)
{

    for(int i=1;i<n;i*=100)
    printf("Hello World \n");

    return 0;
}
//答案是:O(logn) 与问题的规模n有关 对数级别的 无论底数是多少 都是 logn
//        假设问题规模是10000 这个程序要执行2次 log100(N) = 2

void function2(int n)
{

    int s=0,i=0
    while(s<=n)
    {
        i++;
        s=s+i;
    }
    return 0;
}
//答案是:O(n) 与问题的规模n有关
//        解题思路:
//假设n=1000 那么程序要执行 45次左右
//log2(1000)= 10 (约等于);
//O(logn) < 该程序 < O(n)
//所以是O(n)
//有些同学说是O(根号N) 这个答案也对 只是更为精确

int func(int n;)
{
    if(n<=1)
    return 1;
    else
    return n + func(n-1);
}
//时间复杂度为O(N)看递归调用的次数与问题的规模之间的关系
12-28 14:15