学习编程的第七天,打卡-DAY7(2024/9/13)

递归函数

目录

一、定义

二、必要条件

三、运用递归的代码

运用递归打印输入数的每一位

递归实现strlen的功能

运用递归计算k的n次方

递归计算输入整数各位相加之和


一、定义

在函数体中调用自身的过程,执行时会反复调用,直到达到结束条件时停止

二、必要条件

1.需要存在限制条件

2.每次递归调用后越来越接近限制条件

三、运用递归的代码

  1. 运用递归打印输入数的每一位

    #include <stdio.h>
    
    void print(int x)
    {
    	if (x > 9)
    	{
    		print(x / 10);
    	}
    	printf("%d", x % 10);
    }
    
    
    
    int main()
    {
    	int a = 0;
    	scanf("%d", &a);
    	print(a);
    
    	return 0;
    }
  2. 递归实现strlen的功能

    #include <stdio.h>
    
    int my_strlen(char* str)
    {
    	int i = 0;
    	if (*str != '\0')
    	return i = 1 + my_strlen(str + 1);
    }
    
    int main()
    {
    	printf("%d",my_strlen("hello worllld!"));
    
    	return 0;
    }
  3. 运用递归计算k的n次方

    #include <stdio.h>
    
    
    int power(int x,int y)
    {
    	if (y != 0)
    	{
    		if (y != 0)
    			return power(x, y - 1) * x;
    		else if (y == 0)
    			return 1;
    	}
    }
    
    int main()
    {
    	int k = 0;
    	int n = 0;
    	int i = 0;
    	int ret = 1;
    	scanf("%d %d", &n, &k);
    
    	printf("%d",power(n, k));
    
    	return 0;
    }
  4. 递归计算输入整数各位相加之和

    #include <stdio.h>
    
    int DigitSum(int x)
    {
    	if (x / 10 != 0)
    		return x % 10 + DigitSum(x / 10);
    	else if (x / 10 == 0)
    		return x%10;
    
    }
    
    
    int main()
    {
    	int a = 0;
    	scanf("%d", &a);
    	printf("%d", DigitSum(a));
    
    	return 0;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值