首页 > 其他分享 >递归疑难问题解答

递归疑难问题解答

时间:2024-12-06 13:30:01浏览次数:6  
标签:10 return 递归 疑难问题 int printf fac 解答

1.计算一个数的每位之和(递归实现)

写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和

例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19

输入:1729,输出:19

#include <stdio.h>
int fac(int n)
{
	if (n < 10)
	{
		return n;
	}
	else
	{
		return fac(n / 10) + n % 10;
	}
}
int main()
{
	int n;
	scanf("%d", &n);
	printf("%d", fac(n));
	return 0;
}

1729
9 = 1729 % 10;
2 = 172 % 10;
7 = 17 % 10;
1 = 1 % 10;
n < 10  --->n
n >= 10 --->fac(n / 10) + n % 10; 

n=123时的分析

2.递归和非递归分别实现求n的阶乘(不考虑溢出的问题) 

递归

#include <stdio.h>
int fac(int n)
{
	if (n == 1)
	{
		return 1;
	}
	else
	{
		return n*fac(n-1);
	}
}
int main()
{
	int n;
	scanf("%d", &n);
	printf("%d", fac(n));
	return 0;
}

 n!=n*(n-1)!
n==1,1

循环

#include <stdio.h>
int fac(int n)
{
	int i, ret = 1;
	for (i = 1; i <= n; i++)
	{
		ret *= i;
	}
	return ret;
}
int main()
{
	int n;
	scanf("%d", &n);
	printf("%d", fac(n));
	return 0;
}

n = 1 * 2 * 3 * 4....*n;

3.递归方式实现打印一个整数的每一位

#include <stdio.h>
void Print(int n)
{
	if (n < 10)
	{
		printf("%d ",n);
	}
	else
	{
		Print(n / 10);
		printf("%d ", n % 10);
	}
}
int main()
{
	int n;
	scanf("%d", &n);
	Print(n);
	return 0;
}

 

 

标签:10,return,递归,疑难问题,int,printf,fac,解答
From: https://blog.csdn.net/chenynan_/article/details/144289054

相关文章

  • 【唐叔学算法】第二天:探索递归的魅力
    递归算法简介递归算法是一种在解决问题时,将问题分解成更小的、相似的子问题来解决的方法。它是一种非常强大的编程技术,尤其适用于那些可以自然分解为相似子问题的场景。递归算法的核心思想是:问题可以分解为更小的相同问题,直到问题足够小以至于可以直接解决。如何使用递归......
  • 关于二叉树的先/中/后序的非递归遍历
    力扣上有原题~中 先后前言先前跟着acwing学习算法基础课,自以为已经掌握了基础的算法和数据结构,剩下就差做题了,结果之后在力扣和洛谷上看到有关二叉树的题目,完全不知道是怎么一回事,故开始二叉树的学习(果然学习数据结构基础不能光看课)正文本片文章主要讲述二叉树的先中后......
  • 头歌解答 Redis基本命令
    第1关:字符串、列表与集合编程要求根据提示,在右侧Begin-End区域补充代码,完成任务分配的后端处理逻辑:在task_empty()方法中:从Redis中获取列表task_list的长度,判断是否为0若为0,则返回True若不为0,则返回False在get_task()方法中:从列表task_lis......
  • 【Java面试题 | 解答】Dubbo面试八连问,这些你都能答上来吗?
    Dubbo是什么?Dubbo能做什么?Dubbo内置了哪几种服务容器?Dubbo核心的配置有哪些?Dubbo有哪几种集群容错方案,默认是哪种?Dubbo有哪几种负载均衡策略,默认是哪种?Dubbo默认使用的是什么通信框架,还有别的选择吗?你觉得用Dubbo好还是SpringCloud好?1.Dubbo是什么?Dubbo是......
  • 匿名函数与递归函数
    '''匿名函数:官方定义,不推荐所有人使用的一种方式,但是官方支持该语法。即懒人版的函数。只有极少数情况下会选择使用该方法。匿名函数就是基于lambda关键字来实现的'''#匿名函数示例#a=lambdab:b+100#定义了一个匿名函数,要求传入一个参数b,执行了b+100......
  • 递归、分治和动态规划
    递归、分治和动态规划是算法中的三种重要思想,尽管它们有一些相似之处,但在具体实现和应用上有所不同。下面我将逐一讲解这三者的概念和区别。1.递归(Recursion)递归是算法中的一种思想,指的是通过将一个大问题分解为规模较小的相同问题来求解问题。递归通过函数自己调用自己来实现......
  • Python递归
    两个特点:1、调用自身2、结束条件为什么func3打印321而func4打印123的原因(看套娃图理解,大框为func,小框为print)(3从外到内,4从内到外)示例:汉诺塔问题一共n个盘子,把上面的n-1个盘子看成一个整体把n-1个盘子从A经过C移动到B把第n个盘子从A移动到C(移动一步的情况)把n-1个盘子从B......
  • 建筑行业提高效率靠什么可视化软件?求解答!
    在建筑行业中,高效的团队协作至关重要。随着科技的不断发展,越来越多的可视化团队协同管理办公软件涌现出来,为建筑团队提供了更高效的工作方式。下面,我们将盘点五款可视化提高团队协同管理办公效率的软件,包括板栗看板以及国外的四款相关小众软件。一、板栗看板板栗看板是一款功能......
  • 【扫雷游戏】(递归版详解)
    •前言在我们学习了数组和函数等知识,我们可以自己实现一个扫雷游戏的逻辑。不仅可以巩固知识,也可以提高自己的代码能力。在这个过程中如果有什么问题,欢迎各位大佬指点,我会虚心听教改正!!•逻辑分析首先我们来分析扫雷游戏逻辑。•界面首先来看扫雷游戏的界面,是一个......
  • 4、背包问题(动态规划)(递归,回溯,迭代)
    一、递归,回溯,迭代 在开始回溯算法前,我想先弄清这三个的关系 递归是指一个函数在定义中直接或间接地调用自身,递归表现为调用函数本身,通过将问题分解为子问题来逐步解决。回溯算法会在搜索过程中尝试一个方案,如果发现当前方案无法满足要求,就“回退”到上一个步骤,尝试其他......