【C语言】第四十四题→写一个递归函数,不使用 * 运算符,实现两个正整数的相乘。

186 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第26天,点击查看活动详情

🚀write in front🚀

🔎大家好,我是泽奀,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩
💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🖊

前言

今天开始我们的刷题第四十四题的训练,刷题永无止境加油!只有不断地刷题才能提高自身地逻辑思维能力。

题目描述

写一个递归函数,不使用 * 运算符,实现两个正整数的相乘。

题目分析

本道题目要求使用递归来实现不使用 * 运算符,实现两个正整数的相乘。其实递归我们已经在前面的题型已经讲了很多次了,这里再把递归的限制条件说下:

  • 每一个递归函数都应该只进行有限次的递归调用,否则它就会进入死胡同,永远也不能退出了,这样的程序是没有意义的。
  • 存在限制条件,当满足这个限制条件之后的时候,递归便会不再继续。
  • 每次递归调用之后都会越来越接近这个限制条件。

实际上递归不用看的太过于复杂,把递归看的简单点,了解题的特性实际上这样使用递归效果更好。这也是我推荐初学者认识递归的最好的办法。

题目代码

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int Multiply(int a, int b)
{
	if (b == 0)
	{
		return 0;
	}
	return a + Multiply(a, b - 1);// a + a * b
}
int main(void)
{
	int i = 0;
	int j = 0;
	printf("请输入两个数字:");
	scanf("%d %d", &i, &j);
	Multiply(i, j);
	printf("%d\n", Multiply(i, j));
	return 0;
}

运行结果

运行结果🖊

请输入两个数字:4 5

20

最后

刷题是需要长期坚持的,加油奥里给~递归是一种算法也是我们在学C语言地时候必须要学会地时候才行。