电脑装机网站,目前中国电商平台排名,深圳网站建设新闻,英雄联盟怎么做直播网站题目#xff1a; 思路#xff1a;
在主函数中#xff0c;程序首先使用 scanf 输入两个整数 n 和 m#xff0c;表示要计算的排列数。然后#xff0c;调用递归函数 array 计算排列数#xff0c;并将结果保存在变量 ret 中。最后#xff0c;使用 printf 输出计算结果 re…题目 思路
在主函数中程序首先使用 scanf 输入两个整数 n 和 m表示要计算的排列数。然后调用递归函数 array 计算排列数并将结果保存在变量 ret 中。最后使用 printf 输出计算结果 ret。
递归函数 array 的逻辑如下
当 m 等于 1 时直接返回 n表示从 n 个元素中选取 1 个元素只有 n 种情况。当 m 大于 1 时计算 n * array(n - 1, m - 1)表示从 n 个元素中选取 m 个元素的排列数等于从 n-1 个元素中选取 m-1 个元素的排列数乘以 n。
代码
#include stdio.h// 递归函数计算从 n 个元素中选取 m 个元素的排列数
int array(int n, int m)
{// 如果 m 等于 1直接返回 n表示从 n 个元素中选取 1 个元素只有 n 种情况。if (m 1){return n;}// 如果 m 大于 1计算从 n-1 个元素中选取 m-1 个元素的排列数乘以 n。else{return n * array(n - 1, m - 1);}
}int main()
{int n 0, m 0;// 输入两个整数 n 和 m表示要计算的排列数scanf(%d %d, n, m);// 调用递归函数 array 计算排列数并将结果保存在变量 ret 中int ret array(n, m);// 输出计算结果 retprintf(%d, ret);return 0;
}