首页 > 其他分享 >C语言 计算一个数的阶乘两种方法

C语言 计算一个数的阶乘两种方法

时间:2023-08-22 14:14:20浏览次数:33  
标签:rfact 两种 int ans long C语言 num printf 阶乘

// ConsoleApplication15.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <stdio.h>
using namespace std;

long fact(int n);//使用循环方法
long rfact(int n);//使用递归方法

int main(void)
{
    int num;
    printf("This program calculates factorials\n");
    printf("Enter a value in the range 1-12 (q  to quit)\n");
    while (scanf_s("%d",&num)==1)
    {
        if (num < 0)
        {
            printf("No negative numbers,please.\n");
        }
        else if (num>12)
        {
            printf("Keep input under 13\n");
        }
        else
        {
            printf("loop:%d factorial =%ld\n", num, fact(num));
            printf("recuresion :%d factorial = %ld\n", num, rfact(num));
        }
        printf("Enter a value in tha range 1-12(q to quit)\n");    
    }
    printf("Bye\n");
    
    return 0;
}

long fact(int n) {
    long ans;
    for ( ans = 1; n > 1 ; n--)
    {
        ans *= n;
    }
    return ans;
}

long rfact(int n) {
    long ans;
    if (n > 0)
    {
        ans = n * rfact(n - 1);
    }
    else
    {
        ans = 1;
    }
    return ans;
}

标签:rfact,两种,int,ans,long,C语言,num,printf,阶乘
From: https://www.cnblogs.com/wang-xiao-shuai/p/17648341.html

相关文章

  • C语言数组(2)--- 一维数组的使用
    一.导入我们先来看一段代码:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<string.h>intmain(void){ chararr1[]="abc"; chararr2[]={'a','b','c'}; printf("arr1=%d\n",sizeof(arr1)); pri......
  • C语言的小概念
    C程序的结构:1.一个程序由一个或多个源程序文件组成2.函数是C程序的主要组成部分,程序的几乎全部工作都是由各个函数组成的,函数是C语言的基本单位。3.一个C语言程序由一个或多个函数组成的,其中必须包含一个main函数(有且只能有一个main函数)。函数包括2个部分:函数头+函数体。4.程序总是......
  • C语言八股
    数据结构:结构体与联合体的区别?结构体每个成员变量的内存都是独立的,联合体的成员变量的内存空间存在覆盖的情况一个结构体的大小,也就是用sizeof运算符得到的结果,是每个成员变量的大小进行对齐并填充字节之后的总的大小。联合体的大小则是其中一个占用内存空间最大的成员变量的......
  • C语言笔记 - “%”符号的用法
    1、%-运算符%表示取模运算,也就是取余数。例如6%4=22、%-引导符/占位符引导符用于控制输入输出的格式。常见于printf("%d",a);scanf("%d",&a);语句。%s - 字符串 (String)%c - 字符 (Char)%d - 十进制有符号型输出 (Decimal)①%6d整数输出,宽度是6位,不足左边补......
  • Unity 资源加载的两种方式:Resources和AssetBundle最详细的解析(转)
    https://blog.csdn.net/xinzhilinger/article/details/115408934前言:在游戏开发学习初期,游戏体量较小,如果游戏场景需要Asset中的资源,我们可能会通过拖动的方式,将其添加到游戏场景中。而到了实际工作中,会发现再这样做就会使得各种拖动的资源非常复杂,难以查找与维护关于资源:在......
  • 计算机萌新的成长历程——初识C语言3
    今天我将继续分享数据类型的相关内容,本篇的主要内容将围绕short/int/long/longlong——整型数据类型的区别。在介绍他们的区别前,首先我们要先了解计算机中的单位,计算机的单位有以下几种单位:bit——比特位,计算机中最小的单位,1个比特位只能存放一个“1”或一个“0”byte——字节,1字......
  • C语言转义字符详解
    定义是以\开头的字符序列常用作用\n 换行\r  回到本行开头继续输出内容(原内容会被覆盖)\b 使光标左移一个位置\t  相当于四个空格\v 换到下一行继续输出\'  输出‘\" 输出“\ddd1~3位八进制数字,会自动转换成十进制的ascll码的对应字符\xhh 1~2......
  • C语言 笔记 1
    指针有什么用?场景A通过函数交换两个变量的值eg.交换变量a,b的值intswap(int*a,int*b){ inttemp=0; temp=*a; *a=*b; *b=temp;}场景B返回结果有多个,或return返回状态,指针返回结果intdivide(inta,intb,float*res){ intret=1; if(b!=0){ *res......
  • C语言 笔记2
    枚举常量符号化我们可以用下面代码将常量符号化constintred=0;constintyellow=1;constintblue=2;用枚举可以简写成enum=colors{red,yellow,blue};此时,red=>0,yellow=>1,blue=>2枚举枚举是一种用户定义的数据类型,他用关键词enum以如下语法来声明......
  • C语言 笔记4
    全局变量定义在函数外部的变量是全局变量。全局变量具有全局的生存期和作用域全局变量与任何函数都无关在任何函数内部都可以使用全局变量不能使用变量给全局变量初始化不初始化的全局变量默认为NULL函数内的同名变量会隐藏全局变量inta=1;{ inta=2; { in......