第三章-递归和时间复杂度

哔哩哔哩数据结构讲解地址: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)看递归调用的次数与问题的规模之间的关系
复制代码

 

 

posted @   小尾学长  阅读(241)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示