
Patrick B. answered 04/22/21
Math and computer tutor/teacher
Very tall order.... source code is 500+ lines, too long to list here, per gcc compiler generated assembler from Dev C++;
I know the recursion makes things very complicated, pushing and popping the function calls onto the call stack.
Writing it in C is sufficiently formidable...
-----------------------------------------------------------------
#include <stdio.h>
#include <string.h>
long factorial( int n)
{
long factorialReturn=-1;
if (n>-1)
{
if ((n==0) || (n==1))
{
factorialReturn=1;
}
else
{
factorialReturn = n * factorial(n-1);
}
}
return(factorialReturn);
}
Go()
{
int iNum=-1;
char numBuff[255];
int numDigits;
int iLoop;
int iCurDigit;
long sum=0;
while (iNum<=1)
{
printf(" Please input the number :>");
scanf("%d",&iNum);
}
sprintf(numBuff,"%d",iNum);
numDigits = strlen(numBuff);
for (iLoop=0; iLoop<numDigits; iLoop++)
{
iCurDigit = int(numBuff[iLoop]-48);
sum += factorial(iCurDigit);
}
if (sum==long(iNum))
{
printf(" %d is a STRONG # \n",iNum);
}
}
int main()
{
Go();
}