题目要求:需要使用递归函数。如:
int 递归函数(int n)
{
if (n的位数==1)
返回n;
else
返回 递归函数(各位数字之和);
}
//呃,n的位数怎么求?也可以用递归……
//比如:如果n小于10,返回1。否则返回1+递归函数(n/10)。
//或者你用字符串作为参数 = =
输入格式
一个非负整数n,n不会超出int类型的表示范围。
输出格式
输出计算之后的数码。
比如:S(1990)=1+9+9+0=19,S(19)=10,S(10)=1.
输入样例
2014
输出样例
7
请教各位大神,我不太会使用递归函数,请你们多多指教,万分感谢。咩~~~~*^_^*
附一个我没有完成的代码:
#include<stdio.h>
#include<stdlib.h>
int fac(int n)
{
if(n<10)
return(1);
else
{
return(1+fac(n/10));
}
}
int ax(int n)
{
int c,d,e=n;
while(e!=0)
{
c+=e%10;
e=e/10;
}
return(c);
}
int sum(int n)
{
int m=fac(n);
if(m=1)
return(n);
else
return(ax(n));
}
int main()
{
int n,y;
int sum(int n);
scanf("%d",&n);
y=sum(n);
printf("%d",y);
system("pause");
return 0;
}
可以参考下面的代码:
#include "stdio.h"
int main()
{
int number,i=0,sum=0;
printf("please input a number:");
scanf("%d",&number);
while(number!=0)
{
sum+=number%10;
number/=10;
i++;
}
printf("sum=%d\n",sum);
printf("位数=%d\n",i);
return 0;
}
扩展资料:
递归函数定义
一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的。用递归过程定义的函数,称为递归函数,例如连加、连乘及阶乘等。凡是递归的函数,都是可计算的,即能行的。
一个直接的例子:
//代码1
void func()
{
//...
if(...)
func();
else
//...
}
参考资料来源:百度百科-递归函数