输入一个大于等于0的整数n,用函数递归调用方式,求出p=n!,并输出p。 用C语言编程。
首先明确题目要求:递归函数,求n!
递归函数的含义:
编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。
n!表示阶乘函数,即1*2*3*……*n
下面给出代码:(C语言实现 )
比较简单的尾递归实现:
#includelong digui(int n); //递归函数声明int main(){int n; scanf("%d",&n);printf("the result is %ld",digui(n)); //打印出递归值return 0;}long digui(int n) //递归函数部分{if(n>1) return n*digui(n-1); //调用递归,让n与n-1相乘,直到n<1时return 1; //n<1时,返回1,实现 n*(n-1)*(n-2)*……*3*2*1}
#include
int power(int x,int n)
{
if(n==0)
return 1;
elseif(n%2==1)
return x*power(x,n-1);
else{
int y=power(x,n/2);
return y*y;
}
}
int main()
{
int a,b,c;
printf("enter x and n:");
setvbuf(stdout,NULL,_IONBF,0);
scanf("%d%d",&a,&b);
c=power(a,b);
printf("结果为%d",c);
return 0;
}
扩展资料
#include
double power(double x,int n);
main()
{
double x;
int n;
printf("Input x,n:");
scanf("%lf,%d",&x,&n);
printf("%.2lf",power(x,n));
}
double power(double x,int n)
{
double a=1.0;
int i;
for(i=1;i<=n;i++)
a*=x;
return a;
}
参考资料:百度百科 - 递归调用
#include <stdlib.h>
#typedefine Type (long long )
Type fun(Type num)
{
if(num < 0)
return -1;
if(num == 0 || num == 1)
return num;
else
return fun(num - 1) * num;
}
int main()
{
Type n = 0;
printf("Please input the number\n");
scanf("%ld", n);
printf("%ld\n", fun(n)); // -1 means error
return 0;
}
n不能太大,太大会溢出
#include <stdio.h>
#include <stdlib.h>
main()
{int n;
long f(int x);
scanf("%d",&n);
printf("%ld",f(n));
system("PAUSE");
}
long f(int x)
{ if(x==1)return(1);
else return(f(x-1)*x);
}
#include "math.h"
int f( int );
main()
{ int x;
printf("Enter a integer number:");
scanf("%d",&x);
int y=f(x);
printf("%d is prime\n",y);
}
f(int n)
{
int a=n;
while(a>1){
n=n*(a-1);
a--;
}
return n;
}
试试行不行吧。。
输入一个大于等于0的整数n,用函数递归调用方式,求出p=n!,并输出p...
{ Type n = 0;printf("Please input the number\\n");scanf("%ld", n);printf("%ld\\n", fun(n)); \/\/ -1 means error return 0;}
从键盘输入任意一个大于等于 0 的整数 n,然后计算 n 的阶乘,并把它 输...
if(n<=1)return 1;return getResult(n-1)*n;} int main(){ int n;scanf("%d",&n);printf("%d!=%.0lf",n,getResult(n));}
excel中如何输入提示大于等于0
选中需要提示的单元格,单击“数据”→“有效性”,在弹出的对话框中单击“输入信息”选项卡,钩选“选定单元格时显示输入信息”,再在“输入信息”文本框中输入提示的文本,如:“请输入大于或等于0的数字”,单击“确定?OK!
编程题: 1.输入一个整数,如果大于等于0则输出 is positive,否则输出is...
main(){ int num=0,i;char a[100];gets(a);for(i=0;a[i];i++){ if(a[i]>='0'&&a[i]<='9')num++;} printf("%d",num);} 4main(){ Int x,I,sum=0;Scanf(“%d”,&x);For(i=1;i<=x;i++)Sum+=I;Printf(“%d”,sum);} ...
一个直线方程中,代入一个点大于0说明什么?小于0又说明什么?还是要和...
要和直线方程等式的右边的数值对比 你最好将等式右边的全都移至左边,得到ax+by+c=0 代入点后得到的数是否大于0无关紧要 要看代入得到的数乘以y前面系数b后 与0的大小关系 大于0 则说明该点在直线上方 小于0 则说明该点在直线下方 等于0 说明在该直线上 ...
输入一个数如果大于0输出为正数如果小于0输出为负数如果等于0输出为0...
Private Sub Command1_Click()Dim n As Double n = Val(InputBox("请输入一个数!"))If n > 0 Then MsgBox "正数"ElseIf n < 0 Then MsgBox "负数"Else MsgBox "0"End If End Sub
c语言如何输入一个正整数N,再输入N个整数,按从小到大的顺序输出?
printf("请输入一个大于0的整数:");scanf("%d",&N);} \/\/输入数组num中的所有数 for(i=0;i<N;){ printf("请输入第%d个数:",(i+1));scanf("%d",&num[i]);if(num[i]<0){ \/\/使数组num中的元素值都大于等于0 printf("必须输入一个大于等于0的数!\\n\\n");}else{ i++;}...
输入一个整数,判断它是否大于零,等于或小于零 c语言怎么编程
include <stdio.h>int main(){int n;printf("输入一个整数: ");scanf("%d",&n);if(n>0)printf("%d 是个大于0的整数.\\n",n);else if(n==0)printf("%d 是个等于0的整数.\\n",n);elseprintf("%d 是个小于0的整数.\\n",n);return 0;} ...
大于等于0的数叫什么
大于等于0的数叫非负数。一、非负数的定义 非负数(Non-negative number)是指大于或等于零的实数。我们可以用数轴来表示非负数的范围,从零开始向右延伸至正无穷。非负数可以被分为两个子集,一个是零,另一个是正数。二、非负数的特点 1、具有相对性 非负数相对于负数而言,是指大于等于零的数,...
自定义函数IsSquare()判断一个函数是否完全平方数,调用并输出n以内的...
int IsSquare(int n){ int bFlag;return bFlag=sqrt(n*1.0)-(int)sqrt(n*1.0)==0?1:0;} void main(){ int n,i;printf("请输入一个大于等于0的数:");scanf("%d",&n);while(n<0){ printf("你输入的数小于0!\\n\\n");printf("请输入一个大于等于0的数:");scanf("%d",...
佛朗普伐: #include <stdio.h>#include <stdlib.h>#typedefine Type (long long ) Type fun(Type num) { if(num < 0) return -1; if(num == 0 || num == 1) return num; else return fun(num - 1) * num; } int main() { Type n = 0; printf("Please input the number\n"); scanf("%ld", n); printf("%ld\n", fun(n)); // -1 means error return 0; }
融水苗族自治县13344017014: 已知n为大于等于零的整数,试写出计算下列递归函数f(n)的递归算法. - ?
佛朗普伐: int f(int n) { if(n==0) { return n+1;} else { return n*f(n/2); } }
融水苗族自治县13344017014: 输入一个整数放入到变量N中,如果这个整数大于0,那么计算1+2+3+......+(n - 1)+n的结果,否则输出错误. - ?
佛朗普伐: <p>意思是:输入一个数,比如是5,那么求计算1+...一直加到5的和.就这么一个小程序</p> <p>我把程序代码也贴出来给你吧:</p> import java.util.Scanner; public class Test { public static void main(String[] args) { int num = 0, sum = 0; System....
融水苗族自治县13344017014: 用VB编程:用输入框输入一个数n,若此数是大于0的正整数,则以概述框作为圆的半径算出的面积,?
佛朗普伐: Dim nn = InputBox("请输入一个数N")Do While IsNumeric(n) = False Or n < 0MsgBox "请输入一个正数"n = InputBox("请输入一个数N")LoopMsgBox "圆的面积为" & 3.14 * n ^ 2仅供参考
融水苗族自治县13344017014: 输入一个整数,当这个大于0时,求这个数的平方根,否则求绝对值. - ?
佛朗普伐: #include <stdio.h>#include <math.h> int main() { int n; scanf("%d", &n); if (n > 0) printf("%lf\n", sqrt(n*1.0)); else printf("%d\n", abs(n)); return 0; }
融水苗族自治县13344017014: 请大神帮帮忙,输入一个整数n,输出其符号,即大于0时输出“+”,小于0时“–”. - ?
佛朗普伐: int n; scanf("%d", &n); if (n >= 0) {printf("%c", '+'); } else {printf("%c", '-'); }
融水苗族自治县13344017014: 编程序实现输入任意大于0且小于10的整数n ,输出s ,且s=1+2+3+...+n - ?
佛朗普伐: int s = 0; int n; while(true){ System.out.print("请输入大于0且小于10的整数n:"); Scanner sc = new Scanner(System.in); n = sc.nextInt(); if(n > 0 && n//当输入大于0小于10的整数时退出循环,进行下面计算 break; } } for (int i = 1; is += i; } System.out.println(s);根据你的提问,用java做的
融水苗族自治县13344017014: c语言,通过函数为数组输入若干大于等于0的整数,用负数作为输入结束标志,调用函数输出该数组的元素? - ?
佛朗普伐: 运行截图:程序:#include #include int main(void) { int arr[256]; int i = 0; printf("请输入若干非负整数,以负数输入结束: \n"); while (true) { scanf("%d", &arr[i]); if (arr[i++]break; } i = 0; printf("您输入的数如下: \n"); while (arr[i] >= 0) printf("%d ", arr[i++]); system("PAUSE>NUL"); return 0; }
融水苗族自治县13344017014: 从键盘输入一个整数N(N>=0),然后再输入N个整数, 按从小到大的顺序输出. 正在学C语言编程,求教 - ?
佛朗普伐: #include<stdio.h> int main(void) { int n,i,j,t; printf("please enter anumber:\n"); scanf("%d",&n); int a[n]; printf("please enter %d number:\n",n); for(i=0;i<n;i++) { printf("enter %dth number:",i+1); scanf("%d",&a[i]); } for(i=0;i<n-1;i++) for(j=0...