【C语言】:递归题

简介: 【C语言】:递归题

对于递归问题,我们一定要想清楚递归的结束条件,每个递归的结束条件,就是思考这个问题的起始点

题目1:

思路:当k=1时,任何数的1次方都是原数,此时返回n,这就是递归的结束条件,当k>1时,就使用递归进行拆解:

代码实现如下:

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

代码的执行过程如下:

题目2:

思路:当输入值n<10时,返回n,这就是递归的结束条件,当n>10时:

代码实现如下:

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

题目3:

思路:使用递归时,我们需要知道它的结束条件,当输入值n=1时,返回1,这就是结束条件,当n>1时:

使用非递归时,就是迭代(循环)。

代码实现如下:

#include <stdio.h>
//使用递归
int Func(int n)
{
  if (n == 1)
    return n;
  else
    return n * Func(n - 1);
}
int main()
{
  int n = 0;
  scanf("%d", &n);
  int ret = Func(n);
  printf("%d\n", ret);
  return 0;
}
//使用迭代
//int main()
//{
//  int n = 0;
//  scanf("%d", &n);
//  int ret = 1;
//
//  for (int i = 1; i <= n; i++)
//  {
//    ret *= i;
//  }
//  printf("%d\n", ret);
//
//  return 0;
//}

题目4:

思路:同样的,我们首先要判断递归的结束条件,当输入值n<10时,直接打印n,这就是递归的结束条件。当n>10时:

代码实现如下:

#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 = 0;
  scanf("%d", &n);
  Print(n);
  return 0;
}
目录
相关文章
|
7天前
|
C语言
C语言--函数递归与迭代
C语言--函数递归与迭代
|
13天前
|
机器学习/深度学习 算法 C语言
详细介绍递归算法在 C 语言中的应用,包括递归的基本概念、特点、实现方法以及实际应用案例
【6月更文挑战第15天】递归算法在C语言中是强大力量的体现,通过函数调用自身解决复杂问题。递归涉及基本概念如自调用、终止条件及栈空间管理。在C中实现递归需定义递归函数,分解问题并设定停止条件。阶乘和斐波那契数列是经典应用示例,展示了递归的优雅与效率。然而,递归可能导致栈溢出,需注意优化。学习递归深化了对“分而治之”策略的理解。**
30 7
TU^
|
14天前
|
机器学习/深度学习 C语言
C语言之函数递归
C语言之函数递归
TU^
14 1
|
7天前
|
C语言
C语言----递归--n的k次方
C语言----递归--n的k次方
11 0
|
7天前
|
C语言
C语言---函数递归
C语言---函数递归
|
7天前
|
C语言
C语言---递归---输入一个整函数,按照顺序打印每一位
C语言---递归---输入一个整函数,按照顺序打印每一位
|
7天前
|
C语言
C语言---递归--求n的阶乘
C语言---递归--求n的阶乘
|
1月前
|
C语言
青蛙跳台阶问题的递归实现(C语言)
青蛙跳台阶问题的递归实现(C语言)
18 2
|
1月前
|
C语言
万字详解:C语言三子棋进阶 + N子棋递归动态判断输赢(二)
我们可以通过创建并定义符号常量NUMBER,来作为判断是否胜利的标准。如三子棋中,令NUMBER为3,则这八个方向中有任意一个方向达成3子连珠,则连珠的这个棋子所代表的玩家获胜。
27 1
|
1月前
|
算法 C语言 C++
万字详解:C语言三子棋进阶 + N子棋递归动态判断输赢(一)
三子棋游戏设计的核心是对二维数组的把握和运用。
28 1