高级网站开发工信部,静态网站开发 内容,校园文创产品设计,网站自动采集更新对于递归问题#xff0c;我们一定要想清楚递归的结束条件#xff0c;每个递归的结束条件#xff0c;就是思考这个问题的起始点。 题目1#xff1a; 思路#xff1a;当k1时#xff0c;任何数的1次方都是原数#xff0c;此时返回n#xff0c;这就是递归的结束条件#… 对于递归问题我们一定要想清楚递归的结束条件每个递归的结束条件就是思考这个问题的起始点。 题目1 思路当k1时任何数的1次方都是原数此时返回n这就是递归的结束条件当k1时就使用递归进行拆解 代码实现如下
#include stdio.hint Func(int n,int k)
{if (k 1)return n;elsereturn 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 思路当输入值n10时返回n这就是递归的结束条件当n10时 代码实现如下
#include stdio.hint Func(int n)
{if (n 10)return n;elsereturn n % 10 Func(n / 10);
}int main()
{int n 0;scanf(%d, n);int ret Func(n);printf(%d\n, ret);return 0;
}题目3 思路使用递归时我们需要知道它的结束条件当输入值n1时返回1这就是结束条件当n1时 使用非递归时就是迭代循环。 代码实现如下
#include stdio.h//使用递归
int Func(int n)
{if (n 1)return n;elsereturn 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 思路同样的我们首先要判断递归的结束条件当输入值n10时直接打印n这就是递归的结束条件。当n10时 代码实现如下
#include stdio.hvoid 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;
}